Zdarzenia filtru Django występujące dzisiaj
Staram się logicznie reprezentować następujące elementy w filtrze Django. Mam model „zdarzenia” i model lokalizacji, który można przedstawić jako:
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()
W przypadku danej lokalizacji chcę wybrać wszystkie wydarzenia, które mają miejsce dzisiaj. Wypróbowałem różne strategie za pomocą metody „bookings_today” w menedżerze zdarzeń, ale właściwa składnia filtru wymyka mi się:
class EventManager(models.Manager):
def bookings_today(self, location_id):
bookings = self.filter(location=location_id, start=?, end=?)
date () kończy się niepowodzeniem, ponieważ zeruje czasy, a czas w ciągu dnia ma krytyczne znaczenie dla aplikacji, to samo dotyczy min i maksimum dat oraz używania ich jako podpórek. Ponadto istnieje wiele możliwych ważnych konfiguracji:
start_date < today, end_date during today
start_date during today, end_date during today
start_date during today, end_date after today
Czy muszę kodować cały zestaw różnych opcji, czy istnieje bardziej prosta i elegancka metoda?