Django-Filter-Ereignisse treten heute auf

Ich kämpfe darum, das Folgende in einem Django-Filter logisch darzustellen. Ich habe ein "Ereignis" -Modell und ein Standortmodell, die dargestellt werden können als:

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()

Für einen bestimmten Ort möchte ich alle Ereignisse auswählen, die heute stattfinden. Ich habe verschiedene Strategien über eine "bookings_today" -Methode im EventManager ausprobiert, aber die richtige Filtersyntax entgeht mir:

class EventManager(models.Manager):
    def bookings_today(self, location_id):
        bookings = self.filter(location=location_id, start=?, end=?)

date () schlägt fehl, da hierdurch die Zeiten auf Null gesetzt werden und die Uhrzeit während des Tages für die App von entscheidender Bedeutung ist. Gleiches gilt für min und max der Daten und deren Verwendung als Buchstützen. Darüber hinaus gibt es mehrere mögliche gültige Konfigurationen:

start_date < today, end_date during today
start_date during today, end_date during today
start_date during today, end_date after today

Muss ich eine ganze Reihe verschiedener Optionen codieren oder gibt es eine einfachere und elegantere Methode?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage