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.