Mam walkę logicznie reprezentować następujące w filtrze Django. Mam modelu „zdarzenie”, a model lokalizacji, które można przedstawić jako:Django filtr zdarzeń występujących dzisiaj
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()
dla danej lokalizacji, chcę, aby zaznaczyć wszystkie zdarzenia zachodzące dzisiaj. Próbowałem różnych strategii poprzez „bookings_today” metody w EventManager, ale prawo składnia filtr wymyka mi:
class EventManager(models.Manager):
def bookings_today(self, location_id):
bookings = self.filter(location=location_id, start=?, end=?)
date() nie powiedzie się, jak to zeruje się czasy, a czas w ciągu dnia jest krytyczna aplikacja, to samo dotyczy min. i maks. terminów, i używanie ich jako bookends. Ponadto, istnieje wiele możliwych ważne konfiguracje:
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ę zakodować cały zestaw różnych opcji czy jest tam bardziej prosty i elegancki sposób?
spojrzeć na zakres dla operatora BETWEEN SQL patrz również tę odpowiedź przez @danielroseman: http://stackoverflow.com/questions/3963201/ how-do-you-select-between-two-dates-with-django –