python - 获取 Django 应用程序中的所有表名

标签 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

最佳答案

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

如 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()

另一个用户评论说这也有效(也未经测试):

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

还有一个建议阅读这个答案:

Django get list of models in application

关于python - 获取 Django 应用程序中的所有表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1845293/

相关文章:

python - 获取一个 QuerySet 并按相关表的值之和对其进行排序

django - 每当我尝试在模板中使用过滤器时,都会出现 TemplateSyntaxError 错误

mysql - 全文搜索添加与其他表的关系但返回 0 个结果

python - 使用 Apache Beam python 创建谷歌云数据流模板时出现 RuntimeValueProviderError

python - 使用 Python、Flask 和 Celery 的并发异步进程

python - uwsgi - 不使用 virtualenv 中的 python2.7.3,而是使用 venv 中的 2.6,即使 2.6 仅在全局安装

html - Bootstrap collapse "in"类没有效果

mysql - 确定多对多关系中的内容

mysql - 将两个映射表映射在一起?

python - 如何根据前一行的值标记数据?