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) 
相關問題