为什么';t django.db.models.get_models()返回任何抽象模型吗?
为什么';t django.db.models.get_models()返回任何抽象模型吗?,django,django-models,Django,Django Models,django.db.models.get_apps()返回包含模型的所有已安装模块的列表,无论它们是具体的还是抽象的: [<module 'apputils.models' from '/Users/Aaron/Sites/app/apputils/models.py'>, <module 'users.models' from '/Users/Aaron/Sites/app/users/models.py'>, <module 'profiles.models
django.db.models.get_apps()
返回包含模型的所有已安装模块的列表,无论它们是具体的还是抽象的:
[<module 'apputils.models' from '/Users/Aaron/Sites/app/apputils/models.py'>,
<module 'users.models' from '/Users/Aaron/Sites/app/users/models.py'>,
<module 'profiles.models' from '/Users/Aaron/Sites/app/profiles/models.py'>]
这是虫子吗?如果它不是一个bug,有没有什么方法可以包含我的抽象模型?我认为它不是bug。对于django内部用例来说,显式列出抽象模型不是很有用 一个选择是说服django核心开发人员添加此功能(由于使用案例的原因,您实际上没有太多机会……) 第二个选项是像这样自己遍历模型(它从app
myapp
获取模型):
那么可能是一个bug,
get_apps()
返回不包含任何具体模型的应用程序。至少,这两种方法(以及get\u app()
和get\u model()
的文档都需要更新。同时,我还没有–没有回应,看看他们说了些什么应该很有趣。事实上,已经关闭了。“所有这些都是私有API;它们不是为一般用途而设计的,我必须承认它们设计得不是特别好。”很公平,我只需要停止依赖这些API调用。
[<class 'users.models.User'>,
<class 'profiles.models.Profile'>,
<class 'profiles.models.EditorProfile'>,
<class 'profiles.models.AuthorProfile'>]
import inspect
from django.db.models import Model, get_app
is_modelclass = lambda c: inspect.isclass(c) and issubclass(c, Model)
inspect.getmembers(get_app('myapp'), is_modelclass)