【发布时间】:2015-10-28 23:32:48
【问题描述】:
我想创建两个模型:1) 对话,它存储对带有标题的根消息的引用和 2) 消息,它存储消息的内容/文本和对活动的引用。该计划是链接消息并最终创建一个对话树。对话中的根消息将充当链接消息网络的头(入口)节点。
以下是我在模型文件中定义的内容(分别为conversations/models.py 和messages/models.py):
from messages.models import Message
class Conversation(models.Model):
title = models.CharField('Conversation Title', max_length=500)
created_at = models.DateTimeField(auto_now_add=True)
composer = models.ForeignKey(User)
root_message = models.ForeignKey(Message, null=True, blank=True)
from conversations.models import Conversation
class Message(models.Model):
(foreignkey very likely)
conversation = models.ForeignKey(Conversation, null=True, blank=True)
content = models.TextField(db_index=True, max_length=500)
created_at = models.DateTimeField(auto_now_add=True)
问题是当我运行南的schemamigration messages --auto 或schemamigration conversations --auto 时,我遇到了这样的错误:
class Campaign(models.Model):
File "C:\Users\Documents\GitHub\t4s\conversations\models.py", line 11, in Conversation
from messages.models import Message
ImportError: cannot import name Message
我相信这是因为 Message 和 Conversation 正在相互导入。但我希望每个Message 实例与Conversation 有关联,以便我可以参考对话的标题。我可以做些什么来在Message 和Conversation 中成功创建Foreignkey 字段,而无需更改模型的结构?提前感谢您的回答!
【问题讨论】:
-
(另请参阅此处的文档:docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey,尤其是第二个示例)
-
更改班级名称
-
@NightShadeQueen,谢谢你的建议!我仔细阅读了您指向的区域周围的文档,发现它很有帮助。 :)
标签: django django-models django-south django-migrations