Django - 使用prefetch_related进行查询以连接三个表

时间:2018-04-04 10:43:01

标签: python django orm

我正在使用Django 1.11。我有三张桌子。

A(models.Model):
    name = models.CharField(max_length=128)

B(models.Model):
    name = models.CharField(max_length=128)
    a = models.ForeignKey(A, related_name='b')

D(models.Model):
    name = models.CharField(max_length=128)
    a = models.ForeignKey(A)

是否可以使用预取相关的方法从B获取所有D的相应行?我想在D模型中引用字段,并在进行预取查询时与B模型进行比较。可能是这样的:

D.objects.all().select_related(
         'a'
         ).prefetch_related(Prefetch(
                                    'a__b',
                                    queryset=B.objects.filter(name=F('d__name'))
                                    ))

0 个答案:

没有答案