繁体   English   中英

如何结合 django “prefetch_related” 和 “values” 方法?

[英]How to combine django "prefetch_related" and "values" methods?

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()来限制检索的字段数。 请参阅参考资料

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

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>;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM