【发布时间】:2014-05-03 06:30:29
【问题描述】:
我有以下型号:
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')
如果用户配置文件模型已经有一个手机号码 XX44,并且如果我尝试使用带有 json {'mobileNumber': XX44, 'authKey': u'ggsdsagldaslhdkjashdjkashdjkahsdkjah'} 的 UserProfileSerializer 进行序列化,我会收到以下错误:
{'mobileNumber': [u'User profile with this MobileNumber already exists.']}
因为正在为序列化器字段运行模型验证。
如何停止执行 mobileNumber 的模型字段验证。我在序列化程序中尝试了 validate 和 validate_mobileNumber 方法,但它们仍在执行模型验证。
【问题讨论】:
-
你要序列化的数据 {'mobileNumber':XX44.....} 是随机数据还是UserProfile模型的数据?因为如果是随机的未经验证的数据,那么你不应该使用模型序列化器来序列化它,只需使用普通的序列化器。
-
尝试从 UserProfile 模型中删除 'primary_key=True'。
标签: django django-models django-rest-framework django-forms django-validation