Non riesco a rappresentare logicamente quanto segue in un filtro Django. Ho un modello di 'evento', e un modello posizione, che può essere rappresentato come:Eventi di filtro Django che si verificano oggi
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()
per un determinato luogo, voglio selezionare tutti gli eventi che si verificano oggi. Ho provato varie strategie tramite un metodo 'bookings_today' nel EventManager, ma la sintassi del filtro destra mi sfugge:
class EventManager(models.Manager):
def bookings_today(self, location_id):
bookings = self.filter(location=location_id, start=?, end=?)
data() fallisce in quanto questo azzera i tempi, e l'ora durante il giorno è fondamentale per l'app, lo stesso vale per il minimo e il massimo delle date e utilizzandole come fermalibri. In aggiunta, ci sono più possibili configurazioni valide:
start_date < today, end_date during today
start_date during today, end_date during today
start_date during today, end_date after today
Ho bisogno di codificare un insieme di diverse opzioni o c'è un metodo più semplice ed elegante?
uno sguardo al l'operatore di intervallo per tra SQL puoi anche questa risposta da @danielroseman: http://stackoverflow.com/questions/3963201/ how-do-you-select-between-two-dates-with-django –