我有这样的观点:
class PizzaViewSet(viewsets.ModelViewSet):
queryset = PizzaCategory.objects.all()
serializer_class = PizzaCategorySerializer
model = PizzaCategory
我的序列化器是:
class PizzaCategorySerializer(CustomModelSerializer):
pizzas = PizzaSerializer(many=True)
class Meta:
model = PizzaCategory
fields = "__all__"
class PizzaSerializer(CustomModelSerializer):
images = PizzaImageSerializer(many=True, read_only=True)
class Meta:
model = Pizza
fields = "__all__"
我的端点显示如下内容:
[
{
"id": 1,
"pizzas": [
{
"id": 1,
"images": [
{
"id": 1,
"image": "http://127.0.0.1:8000/media/images/305ced93-8f6.jpg",
"title": "pizza.jpg",
}
],
"price": "10.00",
"name": "my pizza example",
"category": 1
}
],
"name": "big cheese",
},
...
我的问题:我需要按价格(例如,价格等于5)过滤结果。
在我看来,类似这样的方法应该起作用:
pizzas = PizzaSerializer(Pizzas.objects.filter(price=5), many=True)
但是,没有任何变化。我该如何正确过滤?
答案 0 :(得分:0)
类PizzaCategorySerializer(CustomModelSerializer): pizzas = serializers.SerializerMethodField()
class Meta:
model = PizzaCategory
fields = "__all__"
def get_pizzas(self, obj):
try:
queryset = Pizzas.objects.filter(price=5)
serializer = PizzaSerializer(queryset, many=True)
return serializer.data
except:
return None