【发布时间】:2022-11-10 22:45:05
【问题描述】:
我有一个 Django REST API,当我想从数据库中查询一些数据时,它可以完美运行。 这里我有一个例子:
视图.py
class ProductListAPIView(generics.ListAPIView):
def get_queryset(self):
# Collect data from products table and filter it
queryset = Product.objects.filter(name="Ferrari", date__lte="2022-08-01") # <- Substitute with line below
return queryset
serializer_class = ProductSerializer
authentication_classes = [authentication.SessionAuthentication, authentication.TokenAuthentication]
permission_classes = [IsOwnerPermission]
序列化程序.py
from rest_framework import serializers
from insert_data.models import Product
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ["name","category","date","price"]
输出是我所期望的,即包含数据库内容的 json 响应。
当我尝试对查询集进行分组以返回产品的平均价格时,就会出现问题。通过在互联网上进行一些研究,我注意到我只需要将 views.py 脚本中的代码行替换为:
Product.objects.filter(name=params['name'], date__lte=query.date).values('name','category').annotate(price_average=Avg('price')).order_by()
我非常有信心这样做,但是 API 返回一个我不知道如何修复的错误:
AttributeError: 'int' object has no attribute 'pk'我完全不知道这是指什么。您能否提出一种智能且优雅的方法来通过 REST API 进行分组操作后返回产品的平均价格?
【问题讨论】:
标签: python django api rest django-rest-framework