【发布时间】:2016-07-28 17:24:17
【问题描述】:
我对 Django 有疑问。我按照教程中的内容做了所有操作,但是当我在序列化程序上检查 is_valid 时,总是错误的。
这是我的代码:
models.py
from django.db import models
class User(models.Model):
userId = models.CharField(max_length=100)
email = models.EmailField()
序列化器.py
from .models import User
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'userId', 'email')
然后我运行python manage.py shell。然后我使用如下命令:
from belmondoapp.models import User
from belmondoapp.serializers import UserSerializer
u = User(userId="user", email="asd@gmail.com")
s = UserSerializer(data=u)
s.is_valid()
而且它总是返回 False... 为什么?我做错了什么?
【问题讨论】:
-
调用
s.is_valid()后检查s.errors -
顺便说一句,我认为问题在于您的
u没有ID(您的序列化程序需要该ID)。你应该先保存它 -
我通过调用 s.errors 得到了
{'non_field_errors': ['Invalid data. Expected a dictionary, but got User.']} -
当我使用
u.save()然后它被添加到 User 然后我将它传递给像 UserSerializer(u) 这样的序列化程序,现在 s.data 是可见的,但是当我把 UserSerialize(data=u ) 然后 s.is_valid() 是假的......也许是因为存在具有相同 id 的用户?
标签: python django django-rest-framework python-3.5