如何使用序列化器 DRF 将点添加到 IntegerFiedl
How to add points to an IntegerFiedl with serializer DRF
我有像这样的序列化器,每次我都穿上它 url,我想要 number_of_points 增加(+=1),但现在当我这样做时,它会保持不变一样,没有变化。您知道如何解决吗?
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
添加instance.save()
到这个函数。您正在更新模型实例上的属性,但从未将其保存到数据库中。
我有像这样的序列化器,每次我都穿上它 url,我想要 number_of_points 增加(+=1),但现在当我这样做时,它会保持不变一样,没有变化。您知道如何解决吗?
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
添加instance.save()
到这个函数。您正在更新模型实例上的属性,但从未将其保存到数据库中。