Django DatabaseError Неверный коннектор для timedelta

Ранее я реализовал ExpressionWrapper для создания пользовательского фильтра, он отлично работает в postgresql, но когда я запустил тест с sqlite3, то появилась ошибка django.db.utils.DatabaseError: Invalid connector for timedelta: *..

class AccessDurationQuerySet(models.QuerySet):

    def filter_expiration(self, is_expired: bool = False):
        """
        To filter whether AccessDuration already expired or yet.
        don't use the same `expiration_date` as expression key,
        because it will clash with `AccessDuration.expiration_date` property.
        Issue: https://stackoverflow.com/q/69012110/6396981
        """
        kwargs = {'_expiration_date__gte': Now()}
        if is_expired:
            del kwargs['_expiration_date__gte']
            kwargs['_expiration_date__lt'] = Now()

        return self.all().annotate(
            _expiration_date=models.ExpressionWrapper(
                models.F('lab_start_date') + (timezone.timedelta(days=1) * models.F('duration')),
                output_field=models.DateTimeField()
            )
        ).filter(**kwargs)


class AccessDurationManager(
    models.Manager.from_queryset(AccessDurationQuerySet),
    DefaultManager
):

    def published(self):
        return super().published().filter(
            status=AccessDurationStatusChoices.active
        )


class AccessDuration(TimeStampedModel):
    course = models.CharField(max_length=100)
    duration = models.FloatField(default=settings.DEFAULT_DURATION,
                                 help_text=_('In days'))
    container_duration = models.CharField(max_length=100,
                                          default=_('Up 2 hours'),
                                          help_text=_('How long a container has to be running, '
                                                      'value based on Docker API Status'))
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    lab_start_date = models.DateTimeField(verbose_name=('Start Date'),
                                          null=True)
    status = models.CharField(max_length=20,
                              choices=AccessDurationStatusChoices.choices,
                              default=AccessDurationStatusChoices.inactive)
    objects = AccessDurationManager()

    ...

В любом случае, я использую docker для своего проекта:

docker-compose -f local.yml run django pytest myproject/tests/flows/2_test_invite_student.py::test_invite_student_by_superuser

Затем ошибка гласила:

Соединители умножения и деления для выражений длительности не поддерживаются на SQLite и MySQL.

подробнее об этом можно прочитать по следующей ссылке https://code.djangoproject.com/ticket/25287

Согласно https://github.com/django/django/pull/14237 некоторые из этих функций теперь поддерживаются, по крайней мере, в SQLite. Вам следует попробовать более свежую версию django, чтобы использовать это. Согласно документации, это должно быть возможно на django 4.0. Так что попробуйте django==4.0rc1, чтобы это заработало.

Добавлена поддержка умножения и деления DurationField на скалярные значения на SQLite.

Вернуться на верх