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