我有以下視圖集,驗證序列化對象,而該領域需要驗證
class VoteViewSet(viewsets.ModelViewSet):
serializer_class = VoteSerializer
permission_classes = [IsAuthenticated]
def perform_create(self, serializer):
serializer.save(created_by=self.request.user)
def get_queryset(self):
return Vote.objects.filter(created_by=self.request.user)
串行
class VoteSerializer(serializers.ModelSerializer):
class Meta:
model = Vote
fields = ('id', 'request')
read_only_fields = ('id',)
和型號。
class Vote(models.Model):
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='votes')
request = models.ForeignKey(Request, related_name='votes')
class Meta:
unique_together = [('request', 'created_by')]
我想保存用戶的投票,但我得到IntegrityError: UNIQUE constraint failed
當我張貼了同樣的要求進行表決的兩倍。我可以通過將created_by
添加到VoteSerializer
來修復錯誤,但我不想在我的序列化數據中使用它。我有什麼選擇?
謝謝,這可能會工作。不過我不喜歡那個,現在我們在兩個不同的地方進行驗證。一旦進入模型(unique_together)和串行器。 – Zoli
在你有保存規則的模型中,在序列化程序中你有數據驗證它是不一樣的。 –
謝謝你,解決方案工作,但不是手動驗證條件,我使用了'投票(**數據,created_by = created_by).full_clean()'。 – Zoli