Найти набор запросов, в котором одно поле больше другого
У меня есть модель 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'))