如何在序列化器中使用count()和sum()?
我想计算sum_of_rating/number_of_rating上的平均评分。
class SearchWorkingProfessionals(APIView):
def post(self,request,format=None):
tags = request.data.get('tag_arr')
city_name = request.data.get('city_name')
tags_list = tags.split(',')
ws = WorkSamplesModel.objects.filter(business_account__serviceareasmodel__city_name=city_name,
business_account__professiontagsmodel__tag_name__in=tags_list,
is_business_card_image=True).distinct()
serializer = SearchWorkingProgessionalsSerializer(ws,many=True)
resp = {'resp':serializer.data}
return Response(resp)
class FeedbackModel(models.Model):
feedback_text = models.CharField(max_length=20)
rating = models.IntegerField()
business_account = models.ForeignKey(BusinessAccountModel,on_delete=models.CASCADE)
class Meta:
db_table = 'feedback'
这是我当前的序列化器
class SearchWorkingProgessionalsSerializer(serializers.Serializer):
business_account_id = serializers.IntegerField()
first_name = serializers.CharField(source='business_account.user.first_name')
last_name = serializers.CharField(source='business_account.user.last_name')
profile_pic = serializers.ImageField(source='business_account.user.profile_pic')
business_title = serializers.CharField(source='business_account.business_title')
business_description = serializers.CharField(source='business_account.business_description')
status = serializers.CharField(source='business_account.status')
note = serializers.CharField(source='business_account.note')
work_sample_image = serializers.ImageField()
work_sample_description = serializers.CharField(max_length=1000)
class WorkSamplesModel(models.Model):
work_sample_image = models.ImageField(blank=True,null=True,upload_to="work_samples")
work_sample_description = models.CharField(max_length=1000)
is_business_card_image = models.BooleanField(default=False)
business_account = models.ForeignKey(BusinessAccountModel,on_delete=models.CASCADE)
如何使用此序列化器计算平均评分?
I want to calculate the average rating on sum_of_rating/number_of_rating.
class SearchWorkingProfessionals(APIView):
def post(self,request,format=None):
tags = request.data.get('tag_arr')
city_name = request.data.get('city_name')
tags_list = tags.split(',')
ws = WorkSamplesModel.objects.filter(business_account__serviceareasmodel__city_name=city_name,
business_account__professiontagsmodel__tag_name__in=tags_list,
is_business_card_image=True).distinct()
serializer = SearchWorkingProgessionalsSerializer(ws,many=True)
resp = {'resp':serializer.data}
return Response(resp)
class FeedbackModel(models.Model):
feedback_text = models.CharField(max_length=20)
rating = models.IntegerField()
business_account = models.ForeignKey(BusinessAccountModel,on_delete=models.CASCADE)
class Meta:
db_table = 'feedback'
This is my current serializer
class SearchWorkingProgessionalsSerializer(serializers.Serializer):
business_account_id = serializers.IntegerField()
first_name = serializers.CharField(source='business_account.user.first_name')
last_name = serializers.CharField(source='business_account.user.last_name')
profile_pic = serializers.ImageField(source='business_account.user.profile_pic')
business_title = serializers.CharField(source='business_account.business_title')
business_description = serializers.CharField(source='business_account.business_description')
status = serializers.CharField(source='business_account.status')
note = serializers.CharField(source='business_account.note')
work_sample_image = serializers.ImageField()
work_sample_description = serializers.CharField(max_length=1000)
class WorkSamplesModel(models.Model):
work_sample_image = models.ImageField(blank=True,null=True,upload_to="work_samples")
work_sample_description = models.CharField(max_length=1000)
is_business_card_image = models.BooleanField(default=False)
business_account = models.ForeignKey(BusinessAccountModel,on_delete=models.CASCADE)
How to calculate the average rating using this serializer?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您唯一的选择是这种情况是使用
serializermethodfield
。像这样的事情应该起作用(如果我了解您要的内容):The only option you have is this case is to use a
SerializerMethodField
. Something like this should work (if I understood what you asked for):您始终可以编写
serializers.serializermethodfield()
以在串行化中返回动态计算的字段。在您的具体情况下,您也应该发布Worksplessmodel,以更加清晰。
You can always write a
serializers.SerializerMethodField()
to return dynamically calculated fields in serializers.In your specific case, you should post WorkSamplesModel as well for more clarity.
以下代码为我工作..!
Following code work for me..!