Underforespørgsler
skal være forespørgsler, der ikke umiddelbart evalueres, så deres evaluering kan udskydes, indtil den ydre forespørgsel køres. get()
passer ikke til regningen, da den udføres med det samme og returnerer en objektforekomst i stedet for et Queryset
.
Men ved at erstatte filter
for get
og derefter tage en [:1]
skive burde virke:
StatByHour.objects.filter(hour_of_day=OuterRef('hour_filter')).values('hour_of_day')[:1]
Bemærk, hvordan feltreferencen i OuterRef er en streng bogstavelig snarere end en variabel.
Desuden skal underforespørgsler returnere en enkelt kolonne og en enkelt række (da de er tildelt et enkelt felt), deraf values()
og udskæringen ovenfor.
Jeg har heller ikke brugt en underforespørgsel i en Q
objekt endnu; Jeg er ikke sikker på, at det vil virke. Du skal muligvis først gemme underforespørgselsoutputtet i en annotation og derefter bruge det til dine filterberegninger.