Cla*_*ash 2 python django circular-dependency
我认为这比Django更像是一个蟒蛇问题.
但基本上我在模特A做:
from myproject.modelb.models import ModelB
Run Code Online (Sandbox Code Playgroud)
在模型B:
from myproject.modela.models import ModelA
Run Code Online (Sandbox Code Playgroud)
结果:
无法导入名称ModelA
我做了一些禁止的事吗?谢谢
通过在新命名空间中从上到下执行Python模块来导入Python模块.当模块A导入模块B时,A.py的评估暂停,直到加载模块B. 当模块B然后导入模块A时,它获得模块A的部分初始化的命名空间 - 在你的情况下,它缺少ModelA类,因为导入myproject.modelb.models发生在该类的定义之前.
在Django中,您可以通过按名称而不是类对象引用模型来解决此问题.所以,而不是说
from myproject.modela.models import ModelA
class ModelB:
a = models.ForeignKey(ModelA)
Run Code Online (Sandbox Code Playgroud)
你会使用(没有导入):
class ModelB:
a = models.ForeignKey('ModelA')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
425 次 |
| 最近记录: |