我正在研究别人编写的一些代码,并且遇到了重复记录问题。我知道为什么弹出重复的问题(我添加了unique_together约束)。下面的代码用@ transaction.atomic装饰器包装,因此如果任何部分失败,它将回滚。我想让序列化器is_valid()函数跳过重复项,继续前进,而不提出ValidationError。我该怎么做,这是最佳做法吗?
代码利用Django Rest Framework的序列化器和验证器。
serializer_class = globals().get(table + 'Serializer')
if serializer_class is None:
raise SerializerNotFound(table)
serializer = serializer_class(data=data, many=True)
serializer.is_valid(raise_exception=True)
serializer.save()
我还将此代码添加到了Serializer类中:
class Meta:
model = CoolModelName
validators = [
validators.UniqueTogetherValidator(
queryset=CoolModelName.objects.all(),
fields=('field', 'list', 'names', 'here')
)
]