Можно ли совместить 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?