>>> user = User.objects.create_user(username = "testusername", password = "testpassword")
>>> user_serializer = UserSerializer(user)
>>> user_serializer
UserSerializer(<User: testusername>):
>>> user_serializer.is_valid()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/user/Virtual Environments/project/lib/python3.6/site-packages/rest_framework/serializers.py", line 228, in is_valid
'Cannot call `.is_valid()` as no `data=` keyword argument was '
AssertionError: Cannot call `.is_valid()` as no `data=` keyword argument was passed when instantiating the serializer instance.
>>> user_serializer.data
{}
UserSerializer为:
class UserSerializer(serializers.Serializer):
def create(self, validated_data):
return User.objects.create_user(**validated_data)
def __str__(self):
return f"Username: {self.data['username']} Password: {self.data['password']}"
class Meta:
model = User
fields = ['username', 'password']
我不知道怎么了。 user_serializer.data为空。任何帮助,将不胜感激
您应从serializers.ModelSerializer
而不是serializers.Serializer
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['username', 'password']
错误说明自身:
无法调用
.is_valid()
,因为没有传递data=
关键字参数实例化序列化程序实例时。
由于将user_serializer.is_valid()
对象传递给序列化程序,因此无需调用User
。尝试将其删除。
user = User.objects.create_user(username = "testusername", password = "testpassword")
user_serializer = UserSerializer(user)
print(user_serializer.data)