6

我有以下型号:如何覆盖模型现场验证Django的REST框架ModelSerializer

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) 

串行:

class UserProfileSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = UserProfile 
     fields = ('mobileNumber','authKey') 

如果USERPROFILE模型已经有一个移动电话号码XX44,如果我尝试序列使用UserProfileSerializer与json {'mobileNumber':XX44,'authKey':u'ggsdsagldaslhdkjashdjkashdjkahsdkjah'}我收到以下错误:

{'mobileNumber': [u'User profile with this MobileNumber already exists.']} 

因为模型验证正在为序列化程序字段运行。

如何停止执行mobileNumber的模型字段验证。我已经在串行器中尝试了validate和validate_mobileNumber方法,但他们仍在执行模型验证。

+0

你正在试图序列数据{“移动电话号码”:XX44 .....}现在用户配置模式的一些随机数据或数据?因为如果它是随机未经验证的数据,那么你不应该使用模型串行器来序列化它,只需使用正常的串行器。 –

+0

尝试从UserProfile模型中删除'primary_key = True'。 – CuriousGeorge

回答

2

删除手机号码表的唯一约束,所以django序列化程序会根据这个来验证。

或 另外,

serializer=UserProfileSerializer(data=request.DATA,partial=True) 
相关问题