【问题标题】:Django rest serializer Breaks when data existsDjango rest 序列化程序在数据存在时中断
【发布时间】:2014-09-16 12:31:18
【问题描述】:

我有这个模型:

class MyModel(User):
    #others fields

还有这个序列化器:

class MySerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = ('username', 'password', 'some_field')

我从 ajax 获取数据以进行登录,然后像这样处理它:

serializer = MySerializer(data=request.DATA)
print(serializer.is_valid())

问题:当我发送任何数据时,我的序列化程序可以工作,但是当我的 username field 必须是唯一的 User model 描述,与数据库中的一个匹配时,序列化变得无效,所以serializer.is_valid() 返回 False

为什么?我不能使用必须唯一且已存在于数据库中的数据创建序列化对象吗?

【问题讨论】:

  • 它试图创建MyModel 的新模型实例,但由于用户名已经存在,它不能有效地这样做。您应该使用AbstractUser 来继承用户。
  • 您还应该确保序列化程序上的查找字段设置为username

标签: django serialization django-rest-framework django-users


【解决方案1】:

因为您使用的是ModelSerializer,它会自动为您的序列化程序生成验证器。您应该改用普通的Serializer 类。

Validation in REST framework

【讨论】:

    猜你喜欢
    • 2017-07-09
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2021-04-09
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    相关资源
    最近更新 更多