Django中form表单提交出现错误,如何更改?

image.png

创建用户信息,提交返回用户列表出现错误
image.png
Cannot assign "'2'": "UserInfo.depart" must be a "Department" instance.

不知道什么原因?

阅读 3.2k
2 个回答

这个UserInfo中的depart,应该是外键吧,我猜测应该是,

models.UserInfo.objects.create(name=name,password=password,...,depart=depart)
# 这里的depart赋值的应该是一个实例,你那里写的depart=depart_id,所以提示" "UserInfo.depart" must be a "Department" instance."

可以这样更改试试

depart=models.Department.objects.filter(depart_id=depart_id)
models.UserInfo.objects.create(name=name,password=password,...,depart=depart)

因为不知道你具体的表结构,只能猜测着来,错误的提示,就是depart必须是一个Department的实例。

关于1楼的问题:
Django的查询结果有两种类型,分别是QuerySet和模型类的instance

query_set = Department.objects.filter(id=1)
instance1 = query_set[0]
instance2 = Department.objects.get(id=1)
type(query_set), type(instance1), type(instance2)
Out[6]: 
(django.db.models.query.QuerySet,
 xx.models.Department,
 xx.models.Department)
query_set
Out[7]: <QuerySet [<Department: Department object (1)>]>
instance1
Out[8]: <Department: Department object (1)>
  • 使用filter查询的返回结果可以为空,可以多个. 为空不报错
  • 使用get查询的返回结果为空则报错,多个只返回查询的第一个
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题