【发布时间】:2017-05-25 04:06:08
【问题描述】:
我有以下型号。
class Car(models.Model):
owner = models.ForeignKey('Driver')
class Country(models.Model)
name = models.CharField(max_length=255)
class Driver(models.Model):
name = models.CharField(max_length=255)
age = models.IntegerField()
country = models.ForeignKey('Country')
我想选择拥有汽车的司机的姓名。
Car.objects.all().values('owner__name')
我是否需要使用 select_related() 方法来避免每个对象的连接,或者它是多余的,因为隐含了 values() 方法?
Car.objects.all().select_related('owner').values('owner__name')
同样,这一次,我想要司机拥有汽车的国家/地区的名称。哪个最好?
Car.objects.all().values('owner__country__name')
Car.objects.all().select_related('owner', 'country').values('owner__country__name')
Car.objects.all().select_related('owner__country').values('owner__country__name')
【问题讨论】:
-
最后一部分我假设你想要
Driver.objects.filter(car__isnull=False,...),但你的问题有点宽泛,你应该把它限制在关于隐式连接的第一个问题 -
谢谢,我编辑了这个问题以缩小使用 select_related() 的范围。
标签: django django-queryset django-select-related