gpt4 book ai didi

Django rest framework - 序列化器字段的过滤

转载 作者:行者123 更新时间:2023-11-28 19:36:47 25 4
gpt4 key购买 nike

我对 Django REST-full 框架有疑问。

当产品呈现到远程客户端时,每个产品都会获取一个包含过滤数据的文件。

比如model可能是这样的

 class Product(models.Model):
name = models.CharField()

class Like(models.Model):
product = models.ForeignKey(Product, related_name="likes")

在客户端,每个产品的喜欢都是真实的,而不是虚假的。

所以我尝试在序列化程序中使用以下代码。

class ProductSerializer(serializers.ModelSerializer):

likes = serializers.PrimaryKeyRelatedField(many=True, queryset=Like.objects.filter(whether_like=True))

class Meta:
model = Product
fields = ('id', 'name', 'likes')

但是,这并没有像我想要的那样工作。

我该怎么办?

以下是额外的 View 代码。

@api_view(['GET'])
def product_list(request, user_id, format=None):

if request.method == 'GET':
products = Product.objects.all()
serializer = ProductSerializer(products, many=True)

return Response(serializer.data)

最佳答案

这样的事情怎么样:

class ProductSerializer(serializers.ModelSerializer):
likes = serializers.SerializerMethodField()

def get_likes(self, product):
qs = Like.objects.filter(whether_like=True, product=product)
serializer = LikeSerializer(instance=qs, many=True)
return serializer.data

class Meta:
model = Product
fields = ('id', 'name', 'likes')

** LikeSerializer 为简洁起见省略。

关于Django rest framework - 序列化器字段的过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28309507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com