【发布时间】:2017-06-06 10:40:36
【问题描述】:
由于某种原因,我没有使用表单模型来创建用户表单等等,所以我没有使用form.is_valid()
我上网查了一下,有人教我创建这样的序列化程序
from django.contrib.auth.models import User
from rest_framework import serializers
class UserModelSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'email', 'password']
我尝试在 python shell 中创建一个新的用户对象,然后在对象上使用序列化程序,然后使用is_valid(),但它给了我 false 而不是 true,而且创建的密码也没有散列,它只是一个字符串
我在 python shell 中做了类似的事情。 (也尝试了一个也有 id 但结果是一样的,所以我没有费心再次粘贴它)
user1 = User.objects.create(username='username', email='email@email.com', password='password')
user1_s = UserModelSerializer(user1)
当我运行 user1_s 时出现了这个
UserModelSerializer(<User: username>):
id = IntegerField(label='ID', read_only=True)
username = CharField(help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, validators=[<django.contrib.auth.validators.ASCIIUsernameValidator object>, <UniqueValidator(queryset=User.objects.all())>])
email = EmailField(allow_blank=True, label='Email address', max_length=254, required=False)
password = CharField(max_length=128)
运行user1_s.data
{'username': u'username', 'password': u'password', 'id': 4, 'email': u'email@email.com'}
运行user1_s = UserModelSerializer(data=user1)
运行user1_s.is_valid() 并返回False
运行user1_s.errors
{u'non_field_errors': [u'Invalid data. Expected a dictionary, but got User.']}
------------------------------------ 有人可以让我知道我做错了什么并指导我正确的方向吗?
提前致谢
【问题讨论】:
标签: python django validation object serialization