查询Django中的自引用表

时间:2017-10-04 16:20:14

标签: sql django

我有一个引用自身的模型,因此我在db中的用户之间有父/子关系。父母可以有多个孩子,但孩子只能有一个孩子。

首先,这是定义模型的正确方法:

class User(models.Model):
   name = models.CharField(max_length=50)
   parent = models.ForeignKey('self')

其次,我需要查询模型并返回特定父级的所有子级。我已经阅读了一些关于树结构的文章,其中查询可能更复杂。但鉴于我只需要一层深度,这将返回所有孩子:

children = User.objects.get(parent=PARENT_ID)

其中PARENT_ID显然是父

的id

1 个答案:

答案 0 :(得分:1)

是的,您可以像使用代码一样使用。

和是的,但有点不同。

children = User.objects.filter(parent__id=PARENT_ID)

您可以找到parent__id

的孩子
  

请注意;记住parent _ _ id,而不是parent_id!