DRF Возврат 201, если пользователь не голосовал, и 400, если проголосовал - PullRequest
0 голосов
/ 10 апреля 2019

Мне нужно создать простой API, в котором я отправляю форму, которая создает экземпляр голосования и возвращает код статуса 201, но если пользователь уже проголосовал, он возвращает неверный запрос 400.

мои модели выглядят так:

class Company(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    short_name = models.CharField(max_length=24)

    def __str__(self):
        return f"{self.short_name}"


class Vote(models.Model):
    voter = models.ForeignKey(Company, on_delete=models.CASCADE)
    date_voted = models.DateField(auto_now=True)

    def __str__(self):
        return f"{self.id}/{self.voter}"

views.py:

class VoteView(CreateAPIView):
    queryset = Vote.objects.all()
    serializer_class = TaskCreateSerializer
    permission_classes = (IsAuthenticated,)

    def perform_create(self, serializer):
        if serializer.is_valid():
            user = self.request.user
            voter = Company.objects.get(user=user)
            has_voted = Vote.objects.filter(voter=voter)
            serializer.save(voter=voter)

и serializers

class TaskCreateSerializer(ModelSerializer):

    class Meta:
        model = Vote
        fields = [
        ]

Пока это просто всегда возвращается 201. Я ищу способ, где яможет написать логику, которая может проверить, существует ли экземпляр голосования для текущего пользователя, затем вернуть Response(data={"message":"You have already voted"}, status=status.HTTP_400_BAD_REQUEST).Самый простой способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...