Django ORM запрос к множеству fk
У меня проблема с поиском, который ищет значение в связанном множестве.
class Room(models.Model):
name = models.Charfield(max_lentgh=64)
class Availability(models.Model):
date = models.DateField()
closed = models.BooleanField(default=False)
room = models.ForeignKey(Room)
Учитывая, что для каждой даты в году есть одно свободное место. Как с помощью ORM-запроса найти, есть ли в номере с заданным датированным диапазоном (т.е. 7 дней):
- доступность существует для каждого дня в заданном диапазоне дат
- ни одно из доступных мест не закрылось=истина
Я не смог найти ни одного примера из Orm, который бы проверял, существуют ли все объекты в пределах daterange
Вы можете перечислить date
и убедиться, что для этого date
есть Availability
с closed=False
:
from datetime import date, timedelta
rooms = Room.objects.all()
start_date = date(2022, 7, 21) # first day
for dd in range(7): # number of days
dt = start_date + timedelta(days=dd)
rooms = rooms.filter(availability__date=dt, availability__closed=False)
После цикла rooms
у for
будет QuerySet
со всеми Room
, которые имеют для всех date
в этом диапазоне Availability
объекты с closed=False
.