Django アプリ内のすべてのテーブル名を取得する 質問する

Django アプリ内のすべてのテーブル名を取得する 質問する

Django アプリですべてのテーブル名を取得するにはどうすればよいですか?

次のコードを使用していますが、ManyToManyFieldによって作成されたテーブルが取得されません。

from django.db.models import get_app, get_models
app = get_app(app_name)
for model in get_models(app):
    print model._meta.db_table

ベストアンサー1

これにより、OP が要求しているすべてのテーブル名が表示されます。

from django.apps import apps

tables = [m._meta.db_table for c in apps.get_app_configs() for m in c.get_models()]

これにより、すべてのモデル名が表示されます。

from django.db import connection
tables = connection.introspection.table_names()
seen_models = connection.introspection.installed_models(tables)

これにより、アプリごとにすべてのモデル名が表示されます。

from django.apps import apps 
from django.contrib import admin 
from django.contrib.admin.sites import AlreadyRegistered 

app_models = apps.get_app_config('my_app').get_models()

追加資料

さらに別の人は、この回答を読むことを勧めています:

Django はアプリケーション内のモデルのリストを取得します

おすすめ記事