【发布时间】:2022-01-22 03:02:51
【问题描述】:
所以我有这个添加属性的序列化程序。假设我想序列化 Post 数据,这就像 Facebook 或 Twitter 上的帖子。当我序列化时,可以说我想将一个变量传递给序列化程序region,因为我使用该变量来计算我想要的序列化程序中的一个属性。因此,例如,我想做PostSerializer(post_object, region='Italy') 之类的事情,它将使用region='Italy' 来计算serializers.SerializerMethodField 的属性。 如何将变量传递给用于计算serializers.SerializerMethodField() 的序列化程序?
serializer.py
class PostSerializer(serializers.ModelSerializer):
post_count_from_region = serializers.SerializerMethodField()
class Meta:
model = Post
fields = ('author', 'body', 'created', 'updated_at', 'post_count_from_region')
def get_post_count_from_region(self, post_obj, region:str):
return Post.objects.filter(region=region).count()
所以对于这个用例的更明确的例子是:
view.py
def get_full_post_data_by_uuid(request, post_uuid, region: str):
post_obj = Post.objects.get(pk=post_uuid)
return Response(PostSerializer(post_obj, region=region).data, status=200)
【问题讨论】:
标签: python django serialization