小编典典

Django与select_related的反向关系

sql

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

型号A

class ModelA(models.Model):
    product = models.ForeignKey(ModelB)
    group = models.ForeignKey(Group)

型号B

class ModelB(models.Model):
    title = models.CharField()

型号C

class ModelC(models.Model):
    product = models.ForeignKey(ModelB)
    group = models.ForeignKey(ModelD)

型号

class ModelD(models.Model):
    name = models.CharField()

现在,我希望将所有 ModelA 对象与 ModelBModelCModelD结合在一起。
在sql中,这很容易做到。只是在表之间进行联接。使用Django ORM时,我会卡住,因为我只能做正向关系。

我在做这个

ModelA.objects.all().select_related(product)

但是我不能加入ModelC,我已经阅读了这篇文章,但是我不想遍历我的大清单,做一件简单的事情!而且我只想打一次数据库。

我使用的是Django的最新版本,希望我已经知道了解决方案。

谢谢你。


阅读 214

收藏
2021-04-22

共1个答案

小编典典

请参阅有关prefetch_related的文档。目前仅是开发人员,但将在Django 1.4中使用。如果您可以等待,或者可以在后备箱上运行。您将可以使用它。

同时,您可以尝试django-batch-select。本质上,它具有相同的目的。

2021-04-22