jac*_*ack 37 python django many-to-many
如何在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
Run Code Online (Sandbox Code Playgroud)
cet*_*eek 65
from django.db import connection
tables = connection.introspection.table_names()
seen_models = connection.introspection.installed_models(tables)
Run Code Online (Sandbox Code Playgroud)
如manage.py的syncdb命令所示.
在下面的评论中,在上面的答案之后几年,ThePhi说(我还没有测试过):
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()
Run Code Online (Sandbox Code Playgroud)
最简单的答案,仍然允许您选择您想要的应用程序,是使用一个额外的参数"include_auto_created"修改您的代码.
from django.db.models import get_app, get_models
app = get_app(app_name)
for model in get_models(app, include_auto_created=True):
print model._meta.db_table
Run Code Online (Sandbox Code Playgroud)
显然,我通过遵循celope的建议来阅读syncdb源代码,所以非常感谢 - 只需记录一个包含应用程序名称的确切答案,因为它是我想要的,也可能是将来的其他人.
| 归档时间: |
|
| 查看次数: |
21031 次 |
| 最近记录: |