Poddotazy
musí jít o dotazy, které nejsou okamžitě vyhodnocovány, aby bylo možné jejich vyhodnocení odložit až do spuštění vnějšího dotazu. get()
neodpovídá účtu, protože se provede okamžitě a vrátí instanci objektu spíše než Queryset
.
Nicméně, nahrazením filter
pro get
a poté si vezmete [:1]
řez by měl fungovat:
StatByHour.objects.filter(hour_of_day=OuterRef('hour_filter')).values('hour_of_day')[:1]
Všimněte si, jak je odkaz na pole v OuterRef je spíše řetězcový literál než proměnná.
Navíc poddotazy musí vracet jeden sloupec a jeden řádek (protože jsou přiřazeny k jednomu poli), proto values()
a krájení výše.
Také jsem nepoužil poddotaz v Q
objekt ještě; Nejsem si jistý, že to bude fungovat. Možná budete muset nejprve uložit výstup poddotazu do anotace a poté ji použít pro výpočty filtru.