【问题标题】:Django - get param from request.get and add it with another numberDjango - 从 request.get 获取参数并将其添加到另一个数字
【发布时间】:2017-11-13 19:15:49
【问题描述】:

我有以下代码。我想从请求中获取值并将其添加到另一个浮点数。我试过这段代码,但给了我错误:unsupported operand type(s) for +: 'float' and '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 但我想将它添加到另一个浮点数。什么是解决方案和最佳实践。谢谢。

【问题讨论】:

  • 如果它给出None,这意味着没有提供参数。为什么您仍然想将 None 添加到现有号码?你想达到什么目的?
  • 我从 request.data.get() 收到一个评级值,所以我想将用户给出的评级添加到 db(models) 中存在的某个数字
  • 让我换个角度问这个问题。我如何从 request.data.get('rating_give_by_user') 的参数中获取一个值并将该值添加到数据库中的现有数字中。
  • 你是这样理解的,但是这个错误告诉你数据中没有提供该值

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


【解决方案1】:

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

【讨论】:

  • 我知道代码是错误的,但是我从 request.data.get() 收到了一个评级值,所以我想将用户给出的评级值添加到 db(models) 中存在的某个数字
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2012-11-02
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 2017-01-22
    相关资源
    最近更新 更多