在 Django 中,我们可以通过
django.contrib.admin.site.get_urls()
方法获取到所有的路由信息,然后通过解析这些路由信息,获取所有的路由表名。
具体来说,可以通过以下代码获取所有路由表名:
from django.contrib import admin
def get_all_table_names():
table_names = []
urls = admin.site.get_urls()
for url in urls:
if hasattr(url, 'name') and url.name is not None:
table_name = url.name.split('_')[0]
if table_name not in table_names:
table_names.append(table_name)
return table_names
以上代码中,首先通过 django.contrib.admin.site.get_urls()
方法获取到所有的路由信息,然后遍历这些路由信息。对于每个路由信息,如果它有 name
属性,并且该属性不为空,则表示该路由信息对应的是一个模型管理页面,因此可以解析出对应的模型表名。具体来说,这里将 name
属性中的下划线分隔后的第一个字符串作为模型表名。最后,将所有的模型表名加入到一个列表中返回即可。
需要注意的是,以上代码只能获取到 Django Admin 中注册的模型表名。如果你的 Django 应用中有其他不在 Django Admin 中注册的模型,那么这些模型的表名将无法通过以上方法获取到。