Eventos de filtro do Django que ocorrem hoje
Eu estou lutando para representar logicamente o seguinte em um filtro do Django. Eu tenho um modelo de 'evento' e um modelo de localização, que pode ser representado como:
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()
Para um determinado local, desejo selecionar todos os eventos que ocorrem hoje. Eu tentei várias estratégias através de um método 'bookings_today' no EventManager, mas a sintaxe correta do filtro me engana:
class EventManager(models.Manager):
def bookings_today(self, location_id):
bookings = self.filter(location=location_id, start=?, end=?)
date () falha pois isso zera os horários, e o horário durante o dia é crítico para o aplicativo, o mesmo vale para min e max das datas e para usá-las como suportes de livros. Além disso, existem várias configurações válidas possíveis:
start_date < today, end_date during today
start_date during today, end_date during today
start_date during today, end_date after today
Preciso codificar um conjunto de diferentes opções ou existe um método mais simples e elegante?