Django filtrer les événements qui se produisent aujourd'hui

J'ai du mal à représenter de façon logique les éléments suivants dans un Django filtre. J'ai un "événement" modèle, et d'un emplacement de modèle, qui peut être représenté par:

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

Pour un emplacement donné, je veux sélectionner tous les événements qui se produisent aujourd'hui. J'ai essayé différentes stratégies via un 'bookings_today' méthode dans le EventManager, mais le droit de la syntaxe du filtre de m'échappe:

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

date() échoue car cela remet à zéro les temps, et le temps au cours de la journée est essentiel à l'app, il en va de même pour min et max de dates, et de les utiliser comme des serre-livres. En outre, il existe de multiples possibilités de configurations valides:

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

Ai-je besoin de code d'un ensemble d'options différentes ou est-il plus simple et élégant méthode?

jetez un oeil à l'opérateur d'intervalle ENTRE sql voir aussi cette réponse par @danielroseman: stackoverflow.com/questions/3963201/...

OriginalL'auteur jvc26 | 2012-06-28