【发布时间】:2018-10-08 10:57:03
【问题描述】:
我无法理解为什么 Django/python 不允许循环导入。不使用apps.get_model然后硬编码模型的标签和名称有什么办法吗?
假设我有两个模型A 和B,其中A 与B 有一个FK,B 有一些基于A 的属性。
型号A
from main import B
field = models.ForeignKey(B, default=None)
型号B
# from main import A // this does not work
@property
def last_used(self):
A = apps.get_model(app_label='main', model_name= 'A')
绕过它的唯一方法是上面的代码,如果我尝试导入 A 并使用 A.objects.filter 我得到 ImportError: cannot import nameerror。
我的问题是,当我重构代码时,查找所有那些硬编码的模型名称变得很麻烦。
这是一个糟糕的设计,我应该彻底改变模型背后的逻辑吗?
【问题讨论】:
-
是 Python 不允许循环导入。
-
@WillemVanOnsem 同样的问题
-
要回答您的问题,最好发布更多代码。有了这些小信息,没人知道你打算做什么。
标签: django django-models