如何在Django模型中反向链接外键?

时间:2015-04-17 22:02:34

标签: python sql django model migration

这是我的模特

class Comment (models.Model):
    parent = models.ForeignKey('Comment',
                           related_name='children',
                           null=True)
    text = models.TextField(blank=True)

    def __repr__(self):
        return self.text

class Thread(models.Model):
    comment = models.ForeignKey('Comment', related_name='parent_thread', null=True)
    text = models.TextField(blank=True)

    def __repr__(self):
        return self.text

当我尝试将线程的评论设置为评论实例时,评论没有被反转链接(我无法访问评论实例中的related_name字段)

from tree.models import Comment, Thread
thread1 = Thread(text='thread1')
c1 = Comment(text='c1')
c1.save()
thread1.save()
thread1.comment = c1
thread1.save()
str(c1.parent_thread) # return None

为什么会这样?有人可以帮助我吗?

由于

1 个答案:

答案 0 :(得分:1)

你正在倒退。如果您想要parent_thread,则必须将ForeignKey放入Comment课程,而不是像这样:

class Thread(models.Model):
    ...

class Comment (models.Model):
    parent_thread = models.ForeignKey(Thread)
    ...

在您当前的代码中,您有多个 Thread个对象链接到单个Comment对象。