Django两个自引用外键

2024-03-29 07:35:47 发布

您现在位置:Python中文网/ 问答频道 /正文

django1.7中的一个write-simple应用程序。是表示链接列表元素的模型:

class TrainingUserWordSetItem(models.Model):
    training_set = models.ForeignKey(TrainingUserWordSet)
    user_word = models.ForeignKey(UserWord)
    prev_item = models.ForeignKey("TrainingUserWordSetItem", null=True, default=None)
    next_item = models.ForeignKey("TrainingUserWordSetItem", null=True, default=None)

迁移时,我收到一个错误:

^{pr2}$

如何生成两个自引用外键字段?在

更新:

帮助使用相关的_name='+':

class TrainingUserWordSetItem(models.Model):
    training_set = models.ForeignKey(TrainingUserWordSet)
    user_word = models.ForeignKey(UserWord)
    prev_item = models.ForeignKey("TrainingUserWordSetItem", null=True, default=None)
    next_item = models.ForeignKey("TrainingUserWordSetItem", null=True, default=None, related_name='+')

Tags: nonetruedefaultmodelmodelstrainingitemnull
1条回答
网友
1楼 · 发布于 2024-03-29 07:35:47

实际上,你可以用一个字段完成你正在尝试的任务。我相信这会奏效:

next_item = models.ForeignKey('self', null=True, default=None, related_name='prev_item')

注意'self'的用法;根据Django documentationTo create a recursive relationship – an object that has a many-to-one relationship with itself – use models.ForeignKey('self').

另外,我建议用OneToOneField而不是ForeignKey来尝试这个,假设每个条目都只有一个上一个条目和一个下一个条目。在

相关问题 更多 >