2014-01-09 53 views
0

假設我有兩個模型,DB中有相應的表格。如何在django中過濾一對一關係中的佔用模型admin

一個模型是男人,另一個模型是女人。假設我不想塑造男人和女人之間的婚姻關係。比方說,一個男人可以娶一個女人,反之亦然。 所以我們在模型之間有一對一的關係。

我知道該怎麼做,我不知道的是如何根據django管理表單字段過濾被佔用的男人和女人。

回答

1

在表單中,您可以修改/過濾傳遞給ModelChoiceField的查詢集,該查詢集選擇男性/女性,並執行queryset = Woman.objects.filter(man=None)或其他任何操作以獲取當前未婚男性。另外,除非你專門爲教會或某些國家工作,否則你可能想要修改你的方法,因爲你現在不能解釋同性婚姻(或者阿米什人)。此外,如果有ManWoman模型存在不相關的非規格化問題,除非您有將其分成兩個模型的具體原因,您可以通過Person模型和gender屬性更好地服務。

編輯:喜歡你suggested-

class Woman(models.Model): 
    age = models.IntegerField() 
    ... 

class Man(models.Model): 
    age = models.IntegerField() 
    woman = models.OneToOneField(Woman) 
    ... 

,那麼你可以訪問man.woman或woman.man和查詢集將工作無論哪種方式,擴大您的評論,如果我們建立模型。 Django爲你處理這些東西當你使用OneToOneField

+0

那麼,問題是我不知道如何做查詢。 婚姻問題只是一個例子,但讓我們繼續。 如果我將OneToOneField創建爲女人的模型Man,django會在Man表中創建外鍵(可能具有獨特的屬性)。所以在女人的桌子上就沒有提到這個女人是否被佔用了。 因此AFAIK queryset = Woman.objects.filter(man = None)不起作用。 你確定它會工作嗎? – user1685095

+0

謝謝!我真的認爲這是行不通的,但確實如此! – user1685095

相關問題