我有一个包含一些字段和唯一的模型
:
....
class Meta(object):
unique_together = ('device_identifier', 'device_platform',)
显然,通过这种方式,关于 Django Rest Framework 序列化器,当我尝试使用相同的 device_identifier
和 device_platform
(如果已经存在)进行 PUT 时,我会收到错误包含此数据的条目)。
{
"non_field_errors": [
"The fields device_identifier, device_platform must make a unique set."
]
}
是否可以在我的模型序列化器中禁用此验证? 因为我需要在保存模型步骤期间管理这种情况(对我来说,在序列化器验证中这不是错误)
最佳答案
Django REST 框架在序列化器上应用UniqueTogetherValidator
。您可以通过覆盖序列化器定义中的 validators
字段来删除它。
class ExampleSerializer(serializers.ModelSerializer):
class Meta:
validators = []
请注意,这也会删除其他 unique-check validators应用于模型,这可能不是最好的主意。为了避免这种情况,只需重写序列化器上的 get_unique_together_validators
方法,以确保仅删除唯一在一起检查。
class ExampleSerializer(serializers.ModelSerializer):
def get_unique_together_validators(self):
"""Overriding method to disable unique together checks"""
return []
关于Django Rest Framework 模型序列化器没有唯一的共同验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45999131/