Django - 从request.get获取param并将其添加到另一个数字

时间:2017-11-13 19:15:50

标签: django python-3.x django-rest-framework django-views

我有以下代码。我想从请求中获取值并将其添加到另一个浮点数。我尝试了这段代码但是给了我错误:不支持的操作数类型+:'float'和'NoneType'

class RatingsUpdateView(UpdateAPIView):

    serializer_class = serializers.RatingsSerializer

    queryset = models.Ratings.objects.all()


    def update(self, request, *args, **kwargs):
        instance = self.get_object()
        #average =
        instance.total_number = instance.total_number + 1
        instance.sum_of_all_ratings =instance.sum_of_all_ratings + request.data.get("rating_give_by_user")

        instance.save()

查看我获得价值的行'request.data.get(“rating_give_by_user”)_ give_by_user'。这个值我们NoneType但我想将它添加到另一个浮点数。什么是解决方案和最佳实践。感谢。

2 个答案:

答案 0 :(得分:0)

request.data.get("rating_give_by_user")正在返回None,您正在尝试将其添加到数字中。您期望此方法调用返回什么?一个(int,str ......)?确保正确传递GET参数,因为现在django没有看到它。

答案 1 :(得分:0)

你必须检查get param是否存在,试试这个:

rating = request.GET.get("rating_give_by_user", None)
if rating:
    instance.sum_of_all_ratings = instance.sum_of_all_ratings + rating