这是我的models.py:
class Category(models.Model):
category_des = models.CharField(max_length=250)
class Type(models.Model):
type_des = models.CharField(max_length=250)
class Product(models.Model):
category_id = models.ForeignKey(Category, on_delete=models.CASCADE)
type_id = models.ForeignKey(Type, on_delete=models.CASCADE)
product_name = models.CharField(max_length=250)
product_price = models.FloatField()
我想要做的是将产品分为菜单列表和附加列表,并按类别分组,如下所示:
类别 1:
额外的 1.a
额外的 1.b
菜单 1.c
菜单 1.d
类别 2:
额外的 2.e
额外的 2.f
菜单 2.g
菜单 2.h
这就是我在 views.py 中所做的:
class MenuList(generics.ListCreateAPIView):
queryset = models.Product.objects.filter(type_id=1).annotate("category_id")
serializer_class = serializers.ProductSerializer
class MenuDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = models.Product.objects.filter(type_id=1).annotate("category_id")
serializer_class = serializers.ProductSerializer
class ExtraList(generics.ListCreateAPIView):
queryset = models.Product.objects.filter(type_id=2).annotate("category_id")
serializer_class = serializers.ProductSerializer
class ExtraDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = models.Product.objects.filter(type_id=2).annotate("category_id")
serializer_class = serializers.ProductSerializer
我收到此错误:TypeError: QuerySet.annotate() received non-expression(s): category_id.
答案 0 :(得分:0)
class MenuList(generics.ListCreateAPIView):
queryset = models.Product.objects.filter(type_id=1).annotate(F("category_id"))
serializer_class = serializers.ProductSerializer
尝试使用 F() 对象将 category_id 添加到查询集中的每个对象。