如何在django rest框架ModelSerializer中覆盖模型字段验证

Rah*_*uri 9 django django-models django-forms django-validation django-rest-framework

我有以下型号:

class UserProfile(models.Model):
    mobileNumber = models.BigIntegerField(primary_key=True)
    authKey = models.CharField(max_length=300,null=False,blank=False)
    creationDateTime = models.DateTimeField(auto_now_add=True)
    lastUpdateDateTime = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)

串行:

class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserProfile
        fields = ('mobileNumber','authKey')
Run Code Online (Sandbox Code Playgroud)

如果userprofile模型已经有一个移动号码XX44,并且如果我尝试使用带有json {'mobileNumber'的UserProfileSerializer序列化:'ux44,'authKey':u'ggsdsagldaslhdkjashdjkashdjkahsdkjah'}我收到以下错误:

{'mobileNumber': [u'User profile with this MobileNumber already exists.']}
Run Code Online (Sandbox Code Playgroud)

因为正在为序列化器字段运行模型验证.

如何停止执行mobileNumber的模型字段验证.我在序列化程序中尝试了validate和validate_mobileNumber方法,但它们仍在执行模型验证.

小智 2

删除表中手机号码的唯一约束,因此 django 序列化程序将根据该约束进行验证。

或者,

   serializer=UserProfileSerializer(data=request.DATA,partial=True)
Run Code Online (Sandbox Code Playgroud)