9

私は次のモデルを持っています:

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 モデルに既に mobilenumber XX44 があり、json {'mobileNumber': XX44, 'authKey': u'ggsdsagldaslhdkjashdjkashdjkahsdkjah'} で UserProfileSerializer を使用してシリアル化しようとすると、次のエラーが発生します。

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

シリアライザ フィールドに対してモデルの検証が実行されているためです。

mobileNumber のモデル フィールド検証の実行を停止するにはどうすればよいですか。シリアライザーで validate および validate_mobileNumber メソッドを試しましたが、まだモデルの検証を実行しています。

4

3 に答える 3

2

テーブルのモバイル番号の一意の制約を削除するため、django シリアライザーはそれに従って検証します。

または代わりに、

   serializer=UserProfileSerializer(data=request.DATA,partial=True)
于 2014-05-14T06:12:02.207 に答える
0

シリアライザーのデータを保存しないことを理解しています。そのため、 のフィールドmobileNumberとして設定できます。read_onlyUserProfileSerializer

詳細については、シリアライザ フィールドのドキュメントを確認してください: http://www.django-rest-framework.org/api-guide/fields/#core-arguments

于 2016-01-05T21:30:53.240 に答える