Я пытаюсь логически представить следующее в фильтре Django. У меня есть модель "события" и модель местоположения, которая может быть представлена как:
class Location(models.Model):
name = models.CharField(max_length=255)
class Event(models.Model):
start_date = models.DateTimeField()
end_date = models.DateTimeField()
location = models.ForeignKeyField(Location)
objects = EventManager()
Для данного местоположения я хочу выбрать все события, происходящие сегодня. Я пробовал различные стратегии с помощью метода bookings_today в EventManager, но правильный синтаксис фильтра ускользает от меня:
class EventManager(models.Manager):
def bookings_today(self, location_id):
bookings = self.filter(location=location_id, start=?, end=?)
date() терпит неудачу, поскольку это обнуляет время, а время в течение дня имеет решающее значение для приложения, то же самое относится к минимальным и максимальным датам и использует их в качестве книг. Кроме того, существует несколько возможных допустимых конфигураций:
start_date < today, end_date during today
start_date during today, end_date during today
start_date during today, end_date after today
Нужно ли мне кодировать целый набор различных параметров или есть более простой и элегантный метод?