Django与select_related的反向关系

bal*_*oth 8 sql django orm

我有4个模型,我想检索它们之间的连接

MODELA

class ModelA(models.Model):
    product = models.ForeignKey(ModelB)
    group = models.ForeignKey(Group)
Run Code Online (Sandbox Code Playgroud)

ModelB

class ModelB(models.Model):
    title = models.CharField()
Run Code Online (Sandbox Code Playgroud)

ModelC

class ModelC(models.Model):
    product = models.ForeignKey(ModelB)
    group = models.ForeignKey(ModelD)
Run Code Online (Sandbox Code Playgroud)

ModelD

class ModelD(models.Model):
    name = models.CharField()
Run Code Online (Sandbox Code Playgroud)

现在我希望我的所有ModelA对象都与ModelB,ModelCModelD一起 在sql中加入这是非常容易的事情.只需在表之间建立联接.随着Django ORM我被卡住,因为我只能做前进的关系.

我这样做

ModelA.objects.all().select_related(product)
Run Code Online (Sandbox Code Playgroud)

但我不能加入ModelC我已经读过这篇文章,但我不想循环我的大清单,做一件简单的事情!我想只打一次数据库.

我正在使用Django的最后一个版本,我希望已经有一个解决方案,我不知道.

谢谢.

Chr*_*att 8

请参阅prefetch_related上的文档.这只是目前的开发,但会受到Django 1.4的影响.如果你可以等,或者你可以在行李箱上运行.你将能够使用它.

在此期间,您可以尝试django-batch-select.它基本上起到了同样的作用.