Subquery's
moeten query's zijn die niet onmiddellijk worden geëvalueerd, zodat hun evaluatie kan worden uitgesteld totdat de buitenste query wordt uitgevoerd. get()
past niet bij de rekening omdat het onmiddellijk wordt uitgevoerd en een objectinstantie retourneert in plaats van een Queryset
.
Echter, het vervangen van filter
voor get
en dan een [:1]
. nemen slice zou moeten werken:
StatByHour.objects.filter(hour_of_day=OuterRef('hour_filter')).values('hour_of_day')[:1]
Merk op hoe de veldverwijzing in OuterRef is een letterlijke tekenreeks in plaats van een variabele.
Bovendien moeten subquery's een enkele kolom en een enkele rij retourneren (omdat ze zijn toegewezen aan een enkel veld), vandaar de values()
en het snijden hierboven.
Ik heb ook geen subquery gebruikt in een Q
object nog; Ik weet niet zeker of het zal werken. Mogelijk moet u de uitvoer van de subquery eerst opslaan in een annotatie en die vervolgens gebruiken voor uw filterberekeningen.