python - ImportError:无法从部分初始化的模块“maca.models”导入名称“Maca”(很可能是由于循环导入)
问题描述
我有这个错误ImportError: cannot import name 'Maca' from partially initialized module 'maca.models' (most likely due to a circular import)
。
我有这样的代码
from maca.models import Maca
class Maca2(models.Model)
maca = models.ForeignKey(
Maca, on_delete=models.CASCADE
)
现在为“Maca”建模,我正在尝试像这样访问每个“Maca2”对象
from maca2.models import Maca2
class Maca(models.Model)
...
@property
maca_has_maca2(self)
maca2 = Maca2.objects.filter(maca=self.id)
你能帮我处理这个吗?
解决方案
Maca2
您可以在maca_has_maca2
属性中导入:
# no import of maca2.models
class Maca(models.Model):
# …
@property
def maca_has_maca2(self):
from maca2.models import Maca2
maca2 = Maca2.objects.all()
对于ForeignKey
s、OneToOneField
s 和ManyToManyField
s,您可以使用带有 as 结构的字符串文字来引用模型,例如:'app_name.ModelName'
# no import of maca2.models
class Maca(models.Model):
maca2 = models.ForeignKey(
'maca2.Maca2', on_delete=models.CASCADE
)
这避免了导入模块,从而避免了循环导入。如果模型有相同的app_name
,你可以参考this by 'ModelName'
。
推荐阅读
- php - Laravel redirect()->back() 返回 iframe
- c# - 如何打断说动词以收集输入?
- python - 根据输入创建包含三个单词短语的词典
- python - Numpy where 行为
- amazon-web-services - AWS cloudwatch SNS 服务仪表板“没有可显示的指标”
- azure-active-directory - 如何通过 Keycloak 社交登录从 Azure AD 获取附加属性
- c# - 发布项目时,获取项目而不是尝试将 ID 推回结果是否是正确的形式?
- html - 找不到在我的网页上嵌入/播放 youtube 视频的方法
- php - PHP:通过对象属性值实例化类
- python - 在 Python 的 SQL 语句中绑定非固定变量