在外键中使用“self”不能从模型中获得“_set”

时间:2016-11-17 03:14:57

标签: python django django-models

我正在尝试使用Django中的_set来获取相关对象。我想得到所有引用父对象的对象。

我的模特:

class MessageBoard(models.Model):
    title = models.CharField(max_length=40)
    message = models.TextField()
    person = models.ForeignKey(User)
    date = models.DateTimeField()
    parent = models.ForeignKey("self", default=None, null=True)

但是当我试图得到一个对象的集合时,我得到了一个错误。

>>> msg = MessageBoard.objects.get(pk=1)
>>> msgs = msg.parent_set.all()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'MessageBoard' object has no attribute 'parent_set'

如果我这样做

>>> MessageBoard.objects.filter(parent=1)

它会根据需要返回对象。我需要使用_set(或其他方式来实现相同的结果),因为我想在django模板中使用。

1 个答案:

答案 0 :(得分:2)

默认的反向引用不是由字段命名,而是由模型命名。它应该是messageboard_set

由于名称令人困惑,我建议在related_name上设置ForeignKey