我目前正try 在基于泛型类的视图上使用get_queryset从url参数中过滤日期范围,但在执行日期范围过滤后收到一个空array.这有点奇怪,因为我可以打印查询集,但无法返回它.
URL参数:http://127.0.0.1:8000/budget-filter?budget_date=2023-6-7&budget_end_date=2023-6-13
下面是views.py
@permission_classes([IsAuthenticated])
class BudgetFilter(generics.ListAPIView):
serializer_class = BudgetSerializer
paginator = None
filter_backends = [DjangoFilterBackend]
filterset_fields = ['budget_category', 'budget_account', 'budget_date', 'budget_end_date']
def get_queryset(self):
user = self.request.user.username
budget_date_url = self.request.GET.get('budget_date', None)
budget_end_date_url = self.request.GET.get('budget_end_date', None)
if budget_date_url is not None:
queryset = BudgetModel.objects.filter(current_user = user).filter(budget_date__gte=budget_date_url, budget_date__lte=budget_end_date_url).values()
print (queryset)
return queryset
下面是序列化程序.py
class BudgetSerializer(serializers.ModelSerializer):
class Meta:
model = BudgetModel
fields = '__all__'
Models.py
class BudgetModel(models.Model):
budget_description = models.CharField(max_length=150)
budget_price = models.DecimalField(max_digits=35, decimal_places=2)
budget_account = models.CharField(max_length=100)
budget_category = models.CharField(max_length=100)
budget_currency = models.CharField(max_length=150)
budget_date = models.DateField(auto_now=False)
budget_end_date = models.DateField(auto_now=False, blank=True)
budget_display_date = models.CharField(max_length=15)
current_user = models.CharField(max_length=200)
回复:print (queryset)
<QuerySet [{'id': 20, 'budget_description': 'adassd', 'budget_price': Decimal('22.00'), 'budget_account': 'Main', 'budget_category': 'Education', 'budget_currency': 'AED', 'budget_date': datetime.date(2023, 6, 10), 'budget_end_date': datetime.date(2023, 6, 10), 'budget_display_date': '10 Jun 2023', 'current_user': 'myname'}]>
我try 了使用不同的日期范围过滤方法,但是__GTE和__LTE方法似乎起到了作用.现在我可以打印查询集了,但不能从函数返回它.