我的模型包含一些字段和unique together
:
....
class Meta(object):
unique_together = ('device_identifier', 'device_platform',)
显然,通过这种方式,关于Django休息框架序列化程序,当我尝试使用相同的device_identifier
和device_platform
(如果已存在包含此数据的条目)的PUT时,我收到错误
{
"non_field_errors": [
"The fields device_identifier, device_platform must make a unique set."
]
}
可以在我的模型序列化器中禁用此验证吗? 因为我需要在保存模型步骤中管理这种情况(对我来说,在串行器验证中这不是错误)
答案 0 :(得分:9)
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 []
答案 1 :(得分:0)
您需要从序列化程序列表中删除验证程序。
虽然不完全相同,但会解释步骤here