Django Rest Framework模型序列化器与独特的一起验证

时间:2017-09-01 11:18:26

标签: django python-2.7 serialization django-rest-framework unique

我的模型包含一些字段和unique together

....
class Meta(object):
    unique_together = ('device_identifier', 'device_platform',)

显然,通过这种方式,关于Django休息框架序列化程序,当我尝试使用相同的device_identifierdevice_platform(如果已存在包含此数据的条目)的PUT时,我收到错误

{
  "non_field_errors": [
    "The fields device_identifier, device_platform must make a unique set."
  ]
}

可以在我的模型序列化器中禁用此验证吗? 因为我需要在保存模型步骤中管理这种情况(对我来说,在串行器验证中这不是错误)

2 个答案:

答案 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