Найти набор запросов, в котором одно поле больше другого
У меня есть модель Shop, я хочу получить все магазины, которые time_open(время открытия) больше чем time_closed(время закрытия). Например, 23:00:00 больше, чем 07:00:00 (магазин_2 (магазин ночной смены)).
class Shop(models.Model):
time_open = models.TimeField()
time_closed = models.TimeField()
Например, у меня есть два объекта:
shop_1 = {
"time_open": "08:00:00",
"time_closed": "22:00:00"
}
shop_2 = {
"time_open": "23:00:00",
"time_closed": "07:00:00"
}
Моя цель - вывести queryset, в котором shop_2 был бы.
Эти временные метки в этих объектах только для визуального примера, я хочу сделать это, не помещая никаких данных в sql query. Я хочу достичь этого путем сравнения полей time_open и time_closed.
Я нашел похожий вопрос в чистом виде SQL:
Найти строки, где одно поле больше другого
Моя цель - сделать это с помощью Django ORM.
Вы можете взглянуть на django F objects, он позволяет фильтровать объекты на основе значений их полей.
from django.db.models import F
Shop.objects.filter(time_open__gt=F('time_closed'))