我有以下视图集,验证序列化对象,而该领域需要验证
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