gpt4 book ai didi

python - 如何结合 django "prefetch_related"和 "values"方法?

转载 作者:太空狗 更新时间:2023-10-30 01:26:41 25 4
gpt4 key购买 nike

prefetch_relatedvalues方法如何结合应用?

以前,我有以下代码。性能优化需要限制此查询中的字段。

Organizations.objects.values('id','name').order_by('name')

现在,我需要预取其关联并使用“prefetch_related”方法将其附加到序列化程序中。

Organizations.objects.prefetch_related('locations').order_by('name')

在这里,我似乎找不到使用“prefetch_related”后限制字段的方法。

我尝试了以下方法,但这样做时序列化器看不到关联的“位置”。

Organizations.objects.prefetch_related('locations').values("id", "name").order_by('name')

模型骨架:

class Organizations(models.Model):
name = models.CharField(max_length=40)

class Location(models.Model):
name = models.CharField(max_length=50)
organization = models.ForeignKey(Organizations, to_field="name", db_column="organization_name", related_name='locations')

class Meta:
db_table = u'locations'

最佳答案

如果您担心自己的应用性能,请使用 only() 来限制检索的字段数。参见 reference .

在上面的例子中,这将是:

Organizations.objects.prefetch_related('locations').only('id', 'name').order_by('name')

这将导致两个查询:

SELECT id, name FROM organizations;
SELECT * from locations WHERE organization_name = <whatever is seen before>;

关于python - 如何结合 django "prefetch_related"和 "values"方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43054459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com