0
class ModelA(Model):
pass
class ModelB(Model):
modela = ForeignKey(ModelA, on_delete=CASCADE)
class ModelC(Model):
modelb = ForeignKey(ModelB, on_delete_CASCADE)
在這種情況下,Django會自動爲我們創建一些額外的管理器。例如,如果ma
是ModelA
的實例,那麼我們可以編寫:ma.modelb_set.all()
,並且如果mb
是ModelB
的實例,那麼我們可以編寫:mb.modelc_set.all()
。如何在Django中創建一個自定義的相關管理器?
能夠引用與ModelA
相關的所有ModelC
實例會很方便。當然,如果ma
是ModelA
的一個實例,我們總是可以寫出:ModelC.objects.filter(modelb__modela=ma).distinct()
。然而,它會更方便,如果我們可以定義爲ModelA
經理,使我們通過簡單地寫,執行上面的查詢:ma.modelc_set.all()
如何寫這樣的經理ModelA
?
好的,謝謝你的回答。然而,在這種情況下,爲什麼Django的默認管理器用於反轉一對多關係管理器而不是屬性? – gaazkam
你不能用屬性做的一件事:'prefetch_related('modelc_set')' – gaazkam