次のモデルがあります。Django - select_related()でクエリを最適化する
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()メソッドを使用する必要がありますか、またはそれが値を持つ暗黙の理由()メソッド冗長ですか?
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の、...)したいと仮定しますが、あなたの質問少し広いですが、暗黙的な結合についての最初の質問に制限する必要があります – Sayse
ありがとう、私はselect_related()の使用にスコープを減らすために質問を編集します。 – srjjio