2017-10-04 47 views
-1

我有一個引用自身的模型,以便在db中的用戶之間有父/子關係。父母可以有多個孩子,但一個孩子只能有一個父母。查詢Django中的自引用表

首先,這是正確的方式來定義模型:

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

其次,我需要查詢模式,並返回一個特定父的所有孩子。我已閱讀了一些關於樹結構的文章,其中查詢可能更復雜。但考慮到我只需要一層深,將這個返回所有孩子:

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

其中PARENT_ID顯然是父

回答

1

是的id,你可以像使用你的代碼。

和是的,但有一點不同。

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

你可以找到孩子parent__id

注意;記得父母__ID,而不是parent_id!

+0

是否可以通過傳遞父對象來搜索父對象?也就是說,我們有「p」作爲用戶對象,然後做children = User.objects.get(parent = p)? – Rob

+0

那麼你想要搜索父母的父母? – Beomi

+0

哦,當然。 children = User.objects.filter(parent = p)是基本的! – Beomi