Как добавить точки в IntegerFiedl с помощью сериализатора DRF
У меня есть сериализатор, подобный этому, и каждый раз, когда я делаю Put на этом url, я хочу, чтобы количество_баллов увеличивалось(+=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() к этой функции. Вы обновляете атрибут на экземпляре модели, но никогда не сохраняете его в базе данных.