prefetch_related
和values
方法如何结合应用?
以前,我有以下代码。性能优化需要限制此查询中的字段。
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/