循环依赖导致导入错误:无法导入名称
这是我第一次遇到这种情况。可能是设计得不好。总之,我不知道该怎么解决。这里有一些模型,它们之间的配合不太顺畅:
talk/models.py
from agencies.models import UserProfile
class Message(models.Model):
text = models.TextField()
source = models.ForeignKey(UserProfile, related_name='source')
dest = models.ForeignKey(UserProfile, related_name='dest')
created = models.DateTimeField(auto_now_add=True)
seen = models.BooleanField(default=False)
class Meta:
ordering = ['created']
agencies/models.py
# from talk.models import Message
当我取消注释时,出现了 ImportError: cannot import name UserProfile
的错误。我真的很想要这个,因为我想把这个属性添加到我的 UserProfile 类中...
class UserProfile(models.Model):
# ...
@property
def unseen_messages_from(self):
pass # :(
有没有什么想法可以解决这个问题?
1 个回答
3
Django中的外键让你可以用字符串来指定模型,这样就不用担心导入问题了。在你的情况下,你可以这样做:
class Message(models.Model):
text = models.TextField()
source = models.ForeignKey('<appname>.UserProfile', related_name='source')
dest = models.ForeignKey('<appname>.UserProfile', related_name='dest')
created = models.DateTimeField(auto_now_add=True)
seen = models.BooleanField(default=False)
class Meta:
ordering = ['created']
也就是说,你可以完全不需要导入。
参考,文档