Я новичок в Django и застрял в следующей проблеме:
У меня есть следующий код:
models.py:
class Vote(models.Model):
answer = models.ForeignKey(Answer, on_delete=models.CASCADE)
user = models.ForeignKey(User,on_delete=models.CASCADE, related_name='votes', null=True)
poll = models.ForeignKey(Poll, on_delete=models.CASCADE, null=True)
views.py:
class VoteViewSet(viewsets.ModelViewSet):
permission_classes = [
permissions.IsAuthenticated,
]
serializer_class = VoteSerializer
def perform_create(self, serializer):
serializer.save(user=self.request.user)
serializer.py:
class VoteSerializer(serializers.ModelSerializer):
class Meta:
model = Vote
fields = ('id', 'answer', 'user')
def create(self, validated_data):
answer = validated_data.get("answer", None)
poll = answer.poll
return Vote.objects.create(answer=answer, poll=poll, user=user)
Каждый раз, когда я делаю запрос POST на голосование, создается новый Голос.
Но я хотел бы проверить, голосовал ли уже пользователь за опрос.
У меня есть этот код, но я не знаю, где его поставить:
if not poll in [vote.poll for vote in user.votes.all()]:
# Create Vote
Как правильно проверить, если пользователь уже проголосовал в опросе, и если нет, создайте голос?