调用外键的主键并使用列表中过滤器时,Django ORM击中数据库多少次?

时间:2019-08-12 03:55:44

标签: django django-models django-orm

让我们说我有以下模型:

class Foo(models.Model):
    ...

class Bar(models.Model):
    name = models.CharField(max_length=255)
    foo = models.ForeignKey(Foo)

现在,我正在执行以下查询:

foo_pks = set([])
for bar in Bar.objects.filter(name='some_name'):
    foo_pks.add(bar.foo.pk)

for foo in Foo.objects.filter(pk__in=foo_pks):
    # Do something

因此,基本上,我将主键添加到集合中,然后使用该集合进行另一个查询。我要打几次数据库?而且,这种效率极低吗?如果是这样,还有更好的方法吗?

0 个答案:

没有答案