简体   繁体   English

如何使用序列化程序 DRF 向 IntegerFiedl 添加点

[英]How to add points to an IntegerFiedl with serializer DRF

I've got serializer like this and each time i do Put on that url, i want the number_of_points increase(+=1), but now when i do it, it stays the same and doesnt change.我有这样的序列化程序,每次我穿上那个 url,我希望 number_of_points 增加(+ = 1),但现在当我这样做时,它保持不变并且不会改变。 Do you have any idea how to fix it?你知道如何解决它吗?

class Answer(models.Model):

    number_of_points = models.IntegerField(default=0)

class AddPointsSerializer(serializers.ModelSerializer):
    class Meta:
        model = Answer
        fields = ('number_of_points',)

    def update(self, instance, validated_data):
        instance.number_of_points += 1
        return instance

class AddPointsAnswer(generics.UpdateAPIView):
    queryset = Answer.objects.all()
    serializer_class = AddPointsSerializer

    def get_queryset(self):
        return super().get_queryset().filter(
            id=self.kwargs['pk']
        )
    path('answers/<int:pk>/addpoints', AddPointsAnswer.as_view()),
    def update(self, instance, validated_data):
        instance.number_of_points += 1
        return instance

Add instance.save() to this function.instance.save()添加到此 function。 You're updating the attribute on the model instance, but never saving it to the database.您正在更新 model 实例上的属性,但从未将其保存到数据库中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM