Ich habe das folgende Modell.Django - Optimieren Abfragen mit 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')
Ich möchte den Namen der Fahrer, die ein Auto besitzen, auswählen.
Car.objects.all().values('owner__name')
Benötige ich, select_related() -Methode verwendet eine für jedes Objekt verbinden zu vermeiden, oder es ist überflüssig, weil implizit mit Werten() Methode?
Car.objects.all().select_related('owner').values('owner__name')
In gleicher Weise mag ich diesmal die Namen der Länder mit den Fahrern ein Auto zu besitzen. Welches ist das beste?
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')
Der letzte Teil ich nehme an, Sie 'Driver.objects.filter wollen (car__isnull = False, ...)' aber Ihre Frage ist ein bisschen breit, Sie sollten es auf die erste Frage über implizite Joins beschränken – Sayse
Danke, bearbeite ich die Frage, um den Anwendungsbereich auf die Verwendung von select_related() zu reduzieren. – srjjio