拥有一个非常大的models.py
文件(包含多个模型),我试图重构,每个文件只有一个模型。
因此,我尝试使用以下结构创建models
包:
app/models/__init__.py
app/models/first_model.py
app/models/second_model.py
不幸的是,我无法让Django懒惰的引用机制运行良好,即:
first_model = models.ForeignKey('app.FirstModel')
返回Django无法找到模型的错误。
有什么想法吗?谢谢!
答案 0 :(得分:1)
它应该有效,请确保在__init__.py中从first_model.py和second_model.py导入所有模型。
from .first_model import FirstModel
from .second_model import SecondModel
编辑:如果您要将模型检索为' app_label.model_name',则必须在__init__.py中导入它们,否则您可以尝试以下操作:
使用https://docs.djangoproject.com/en/2.0/ref/applications/#django.apps.apps.get_model
或者您可以使用ContentTypes:https://docs.djangoproject.com/en/2.0/ref/contrib/contenttypes/#methods-on-contenttype-instances
答案 1 :(得分:0)
在Cookbook中有一个例子,只使用类(模型)的名称,而不是app部分:
first_model = models.ForeignKey('FirstModel')
答案 2 :(得分:0)
__init__.py
的存在告诉Python将其视为一个包,但是为了让Django找到你的模型用于迁移并找到它,你应该在__init__.py
<中导入所有模型的东西/ p>
保持结构:
app/models/__init__.py
app/models/first_model.py
app/models/second_model.py
<强> __初始化__。PY 强>
from .first_models import *
from .second_models import *