Django-фильтр DateFromToRangeFilter не может не фильтровать между двумя датами
Я создаю проект на vue3 + django DRF. Я составляю списки потребления из и я хочу фильтровать между двумя днями. например 2024-06-01 до 2024-06-30.
Я использовал DateFromToRangeFilter, но он не работает. пожалуйста, помогите. omz
Моя модель.py
class ConsumeDetails(models.Model):
date = models.DateField()
category = models.CharField(max_length=100)
subcategory = models.CharField(max_length=100)
vendor = models.CharField(max_length=100)
item = models.CharField(max_length=100)
price = models.DecimalField(max_digits=10, decimal_places=0)
remarks = models.CharField(max_length=100)
consumetype = models.ForeignKey(ConsumeType, on_delete=models.PROTECT)
consumepurpose = models.ForeignKey(ConsumePurpose, on_delete=models.PROTECT)
class Meta:
managed = True
app_label = 'myweb'
db_table = 'Consume_Details'
def __str__(self):
return self.date
Мой filter.py
class ConsumeDetailsFilter(FilterSet):
# date = filters.DateFilter(field_name='date')
RegDate= DateFromToRangeFilter(field_name='date', lookup_expr='gte',lable='date range')
category = filters.CharFilter(field_name='category', lookup_expr='icontains')
subcategory = filters.CharFilter(field_name='subcategory', lookup_expr='icontains')
vendor = filters.CharFilter(field_name='vendor', lookup_expr='icontains')
item = filters.CharFilter(field_name='item', lookup_expr='icontains')
class Meta:
model = ConsumeDetails
fields = ['RegDate','category', 'subcategory', 'vendor', 'item', 'price', 'remarks']
Мой serializers.py
class ConsumeDetailsSerializer(serializers.ModelSerializer):
consumepurpose = ConsumePurposeSerializer()
consumetype = ConsumeTypeSerializer()
class Meta:
model = ConsumeDetails
fields = '__all__'
Мой views.py
class ConsumeDetailsViewSet(ModelViewSet):
queryset = ConsumeDetails.objects.all()
serializer_class = ConsumeDetailsSerializer
filterset_fields = ['consumepurpose','consumetype','category','subcategory','RegDate']
search_fields = ['category','subcategory','vendor','item']
pagination_class = MyPageNumberPagination
Сообщение об ошибке здесь
введите описание изображения здесь
Я хочу использовать star_date и end_date для фильтрации диапазона, как показано по ссылке ниже
<как сказал Golfbauer, вы не можете поместить RegDate в список полей, потому что в вашей модели его нет, вместо этого вы можете добавить следующее, и я думаю, что это вам поможет:
star_date = DateFromToRangeFilter(field_name='date', lookup_expr='gte',lable='date range')
end_date = DateFromToRangeFilter(field_name='date', lookup_expr='lte',lable='date range')
так что вы можете фильтровать по дате начала (или больше), дате начала и дате окончания (диапазон) или дате окончания или меньше