Не удалось удалить start_date с помощью django queryset

Я пытаюсь удалить данные между start_date и_date с помощью django.

Вот код, который я использую:

Porfolio.objects.filter(portfolio_id=portfolio_id, date__gte=start_date, date__lte=end_date).delete()

Проблема: независимо от начальной и конечной даты я использую, начальная дата не удаляется, а все последующие периоды удаляются до конечной даты. и я уверен, что во всех случаях, которые я тестировал, у меня есть данные в начальной дате для удаления. \

дата определяется как date = models.DateField(). Я использую формат 'год-месяц-день' как строку во входных данных (expl: start_date='2022-01-01'). Никаких часов, минут или часовых поясов.\

Не могу понять, почему я получаю такое поведение.

Вам следует использовать range lookup и Q() objects вместе, как указано @AbdulAzizBarkat в приведенном выше комментарии так:

from django.db.models import Q

Porfolio.objects.filter(Q(portfolio_id=portfolio_id) & Q(date__range=(start_date,end_date))).delete()

Это будет работать правильно только если date будет DateField а не DateTimeField согласно документации.

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