json - 将 dict 转换为序列化程序时,Django 中的 serializer.is_valid 始终为 False
问题描述
我的命令:
python manage.py shell
from user.models import UserInfo
from user.serializers import UserInfoSerializer
import io
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
u=UserInfo.objects.all()[0]
s=UserInfoSerializer(u)
j=JSONRenderer().render(s.data)
o=io.BytesIO(j)
d=JSONParser().parse(o)
s1=UserInfoSerializer(data=d)
s1.is_valid()
但这里的问题是 s1.is_valid() 总是 False 并且我无法将 s1 保存为序列化程序。我收到此错误:
>>> d
{'username': 'user001', 'password': 'pass001', 'email': 'user001@example.com', 'contact': 9876543210}
>>> s001=UserInfoSerializer(data=d)
>>> s001.is_valid()
False
>>> s001.validated_data()
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: 'dict' object is not callable
>>> s001.validated_data
{}
>>> s001.data
{'username': 'user001', 'password': 'pass001', 'email': 'user001@example.com', 'contact': 9876543210}
>>> s001.save()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/imharjyotbagga/PycharmProjects/DRF/venv/lib/python3.7/site-packages/rest_framework/serializers.py", line 182, in save
'You cannot call `.save()` on a serializer with invalid data.'
AssertionError: You cannot call `.save()` on a serializer with invalid data.
>>>
那我该怎么办!?
解决方案
您.errors
甚至需要显示属性才能尝试诊断问题。我的盲目猜测是您弄乱了密码字段。但是,除非您生成序列化程序、模型的代码,否则您不会得到任何明确的答案,并且您的序列化程序的代码.errors
也会非常有帮助。
推荐阅读
- c++ - 我的 IF 语句中的问题,Else 无法正常工作
- html-lists - QTextBrowser 显示带有多余空格的嵌套 HTML 列表
- java - 如何修复“volte_imsvt1 无法连接”错误
- python - 张量操作python中的内存和时间
- c# - 在 UWP 应用程序中检测睡眠事件或唤醒事件
- ios - iOS requestStateForRegion 在 didStartMonitoringFor 之后返回 .unknown
- pytorch - 使用固定嵌入时 Seq2Seq 翻译模型中的问题
- php - Codeigniter 和 AJAX MySQL 错误处理
- php - 需要在 $this->request->data 对象中设置数据值以进行测试
- javascript - 有没有办法在用户登录后继续查看弹出模式?