如何在 Django 模型中反转 link 外键?
How to reverse link foreign key in Django model?
这是我的模型
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
为什么会这样?有人可以帮我吗?
谢谢
你在倒退。如果你想有一个 parent_thread
,你必须把 ForeignKey
放到 Comment
class 中,而不是像这样反过来:
class Thread(models.Model):
...
class Comment (models.Model):
parent_thread = models.ForeignKey(Thread)
...
在您当前的代码中,您有 多个 Thread
个对象链接到一个 Comment
对象。
这是我的模型
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
为什么会这样?有人可以帮我吗?
谢谢
你在倒退。如果你想有一个 parent_thread
,你必须把 ForeignKey
放到 Comment
class 中,而不是像这样反过来:
class Thread(models.Model):
...
class Comment (models.Model):
parent_thread = models.ForeignKey(Thread)
...
在您当前的代码中,您有 多个 Thread
个对象链接到一个 Comment
对象。