Найти набор запросов, в котором одно поле больше другого

У меня есть модель 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'))
Вернуться на верх