2024-06-16 12:07:59 发布
网友
如果我调用这个django方法,在测试中,它会生成许多未安装的模型。 这些模型来自其他应用程序的测试代码。在
例如,当我使用apps.get_models()时,我从django包多态性测试代码得到MROBase1。在
apps.get_models()
MROBase1
=>;我要获取数据库中有表的所有模型。在上面的问题中,我得到了一个只用于测试的模型,它不在数据库中。在
注意:我使用Django 1.10
您需要将模型与应用程序隔离:
手动创建所有应用程序名称的字符串列表:my_apps=['my_app_1', 'my_app_2', ...]
my_apps=['my_app_1', 'my_app_2', ...]
(第一个选项),使用get_app_config和get_models方法:
get_app_config
get_models
from django.apps import apps my_app_models = { name: list(apps.get_app_config(name).get_models()) for name in my_apps }
你将在字典里
(第二个选项),使用all_models[<app_name>]属性:
all_models[<app_name>]
您将得到一个'app_name': OrderedDict_of_models
'app_name': OrderedDict_of_models
请参阅thisSO post。在
apps.get_models()将返回所有已安装的型号。如果要查找特定应用程序的模型列表,请执行以下操作:
from django.apps import apps myapp = apps.get_app_config('myapp') myapp.models #returns an OrderedDict
另外,作为参考,here's是get_models()的源代码,以了解它是如何工作的
get_models()
apps.get_models()将返回所有已安装的模型,如果要限制get_app_config使用的已安装应用程序集,则可以使用set_available_apps:
from django.apps import apps myapp = apps.set_available_apps(list_of_available_apps)
您需要将模型与应用程序隔离:
手动创建所有应用程序名称的字符串列表:
my_apps=['my_app_1', 'my_app_2', ...]
(第一个选项),使用
get_app_config
和get_models
方法:你将在字典里
(第二个选项),使用
^{pr2}$all_models[<app_name>]
属性:您将得到一个
的字典'app_name': OrderedDict_of_models
请参阅thisSO post。在
apps.get_models()
将返回所有已安装的型号。如果要查找特定应用程序的模型列表,请执行以下操作:另外,作为参考,here's是
get_models()
的源代码,以了解它是如何工作的apps.get_models()
将返回所有已安装的模型,如果要限制get_app_config使用的已安装应用程序集,则可以使用set_available_apps:相关问题 更多 >
编程相关推荐