Изменить результаты django queryset - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть две модели Event и Shift.

class Event(models.Model):
    start = models.DateTimeField()
    end = models.DateTimeField(blank=True, null=True)

class Shift(models.Model):
    name = models.CharField(max_length=20)
    start = models.TimeField()
    end = models.TimeField()

Теперь на некоторых view я должен отфильтровать Events, которые происходят в интервале Shift. И я сделал это.

queryset = Event.objects.all()
queryset = queryset.filter(start__time__gte=s.start).filter(start__time__lte=s.end) |\
queryset.filter(start__time__lte=s.start).filter(end__time__gte=s.start)

А теперь я хочу обрезать start и end из events в queryset, чтобы быть в ярости start и end из Shift, который я фильтрую. Кроме того, некоторые events могут пересекать Shift более одного раза. В этом случае я должен разделить Event на количество раз, которое он пересекает Shift. Как мне этого добиться?

...