Используйте and, или условия при использовании Case,When

Кто-нибудь знает, как можно использовать условие AND в следующем запросе?

q = Food.objects.all().annotate(open=Case(When(days__day=today,then='blahblah'),When(start_time__lte=now and end_time__gte=now,then='blabla')))

Во втором when я хочу проверить, находится ли значение now между начальным и конечным временем, но похоже, что ключевое слово 'and' здесь не работает

Используйте Q объекты так:

from django.db.models import F, Q, When

q = Food.objects.annotate(open=Case(
    When(days__day=today, then='blahblah'),
    When(Q(start_time__lte=now) & Q(end_time__gte=now), then='blabla'),
)

Используйте & для AND двух объектов Q и | для OR их.

Вернуться на верх