如果我调用这个django方法,在测试中会产生许多未安装的模型。 这些模型来自其他应用程序测试代码。
例如,当我使用apps.get_models()
时,我从django包多态测试代码中获取MROBase1
。
=>我想获得所有在数据库中都有表的模型。在上面的问题中,我得到了一个仅用于测试的模型,它不在数据库中。
注意:我使用Django 1.10
您需要将模型与应用程序隔离:
my_apps=['my_app_1', 'my_app_2', ...]
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
}
你最终会得到一张'app_name': list_of_models
字典all_models[<app_name>]
属性:
from django.apps import apps
my_app_models = {name: apps.all_models[name] for name in my_apps}
你最终会得到一张'app_name': OrderedDict_of_models
字典apps.get_models()
将返回所有已安装的模型,如果您想限制get_app_config [s]使用的已安装应用程序集,则可以使用set_available_apps:
from django.apps import apps
myapp = apps.set_available_apps(list_of_available_apps)