Подзаявки
трябва да бъдат заявки, които не се оценяват веднага, така че оценката им да може да бъде отложена, докато не се изпълни външната заявка. get()
не отговаря на изискванията, тъй като се изпълнява незабавно и връща екземпляр на обект, а не Queryset
.
Въпреки това, замествайки filter
за get
и след това вземане на [:1]
slice трябва да работи:
StatByHour.objects.filter(hour_of_day=OuterRef('hour_filter')).values('hour_of_day')[:1]
Обърнете внимание как препратката към полето в OuterRef е низов литерал, а не променлива.
Освен това подзаявките трябва да върнат една колона и един ред (тъй като са присвоени на едно поле), следователно values()
и нарязването по-горе.
Освен това не съм използвал подзаявка в Q
обект още; Не съм сигурен, че ще се получи. Може да се наложи първо да запишете изхода на подзаявката в анотация и след това да я използвате за вашите изчисления на филтъра.