Можно ли совместить Destroy с Create Django Rest Framework?

У меня есть модель для добавления/вычитания баллов из ответа (ответ и пользователь уникальны вместе, то есть только один человек может проголосовать за или против одного ответа), выглядит так

class Vote(models.Model):
    class AnswerScore(models.IntegerChoices):
        add = 1
        subtract = -1

    score = models.IntegerField(choices=AnswerScore.choices)
    answer = models.ForeignKey('Answer', on_delete=models.PROTECT)
    user = models.ForeignKey('users.CustomUser', on_delete=models.PROTECT)

    class Meta:
        unique_together = ('answer', 'user',)

Вот мой набор представлений и сериализатор для создания Api Endpoint для этого

class VoteSerializer(serializers.ModelSerializer):
    user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault())
    answer = serializers.PrimaryKeyRelatedField(read_only=True)

    class Meta:
        model = Vote
        fields = '__all__'


class VoteCreate(ParentKeyAPIView, generics.CreateAPIView):
    model = Vote
    parent_model_field = 'answer_id'
    serializer_class = VoteSerializer

    def perform_create_kwargs(self, **kwargs):
        return super().perform_create_kwargs(user=self.request.user, answer_id=self.kwargs['pk'], **kwargs)

Теперь я также хочу принять во внимание тот факт, что кто-то может нажать плюс к ответу, но затем решить минус к ответу. И я хочу создать конечную точку для уничтожения конкретного экземпляра Vote, когда это произойдет, а затем в то же время создать новый с противоположным выбором (прибавить/вычесть). Есть ли способ сделать это в Django Rest Framework?

Вернуться на верх