У меня есть две модели 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
. Как мне этого добиться?