假設我有兩個模型,DB中有相應的表格。如何在django中過濾一對一關係中的佔用模型admin
一個模型是男人,另一個模型是女人。假設我不想塑造男人和女人之間的婚姻關係。比方說,一個男人可以娶一個女人,反之亦然。 所以我們在模型之間有一對一的關係。
我知道該怎麼做,我不知道的是如何根據django管理表單字段過濾被佔用的男人和女人。
假設我有兩個模型,DB中有相應的表格。如何在django中過濾一對一關係中的佔用模型admin
一個模型是男人,另一個模型是女人。假設我不想塑造男人和女人之間的婚姻關係。比方說,一個男人可以娶一個女人,反之亦然。 所以我們在模型之間有一對一的關係。
我知道該怎麼做,我不知道的是如何根據django管理表單字段過濾被佔用的男人和女人。
在表單中,您可以修改/過濾傳遞給ModelChoiceField的查詢集,該查詢集選擇男性/女性,並執行queryset = Woman.objects.filter(man=None)
或其他任何操作以獲取當前未婚男性。另外,除非你專門爲教會或某些國家工作,否則你可能想要修改你的方法,因爲你現在不能解釋同性婚姻(或者阿米什人)。此外,如果有Man
和Woman
模型存在不相關的非規格化問題,除非您有將其分成兩個模型的具體原因,您可以通過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
那麼,問題是我不知道如何做查詢。 婚姻問題只是一個例子,但讓我們繼續。 如果我將OneToOneField創建爲女人的模型Man,django會在Man表中創建外鍵(可能具有獨特的屬性)。所以在女人的桌子上就沒有提到這個女人是否被佔用了。 因此AFAIK queryset = Woman.objects.filter(man = None)不起作用。 你確定它會工作嗎? – user1685095
謝謝!我真的認爲這是行不通的,但確實如此! – user1685095