python,django,向mysql更新数据时save()报错不能用 20

求大神帮忙,models.py中有个Student类,当我用s=Student(...)创建对象,然后s.save()可以往mysql中插入记录,但是当我用s.name=... 求大神帮忙,models.py中有个Student类,当我用s = Student(...)创建对象,然后s.save()可以往mysql中插入记录,但是当我用 s.name = 'aaa',想更新的时候,调用s.save()就报错了.错误代码如下,望大家解答一下.

>>> s.save()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "D:\Program Files (x86)\Python27\lib\site-packages\django\db\models\base.
py", line 431, in save
self.save_base(force_insert=force_insert, force_update=force_update)
File "D:\Program Files (x86)\Python27\lib\site-packages\django\db\models\base.
py", line 495, in save_base
rows = manager.filter(pk=pk_val)._update(values)
File "D:\Program Files (x86)\Python27\lib\site-packages\django\db\models\query
.py", line 446, in _update
query.add_update_fields(values)
File "D:\Program Files (x86)\Python27\lib\site-packages\django\db\models\sql\s
ubqueries.py", line 249, in add_update_fields
val = field.get_db_prep_save(val)
File "D:\Program Files (x86)\Python27\lib\site-packages\django\db\models\field
s\__init__.py", line 202, in get_db_prep_save
return self.get_db_prep_value(value)
File "D:\Program Files (x86)\Python27\lib\site-packages\django\db\models\field
s\__init__.py", line 446, in get_db_prep_value
return self.to_python(value)
File "D:\Program Files (x86)\Python27\lib\site-packages\django\db\models\field
s\__init__.py", line 442, in to_python
ugettext_lazy("This field cannot be null."))
ValidationError: <django.utils.functional.__proxy__ object at 0x0000000002F26320
>
在shell下:s1 = Student(...) #插入数据s1.save() 这个插入正常s2 = Student.objects.get(studentid = 1) 返回正常s2.name 打印正常s2.name = 'asdf's2.save() 报错了
展开
 我来答
leilmyxwz
2013-08-08 · TA获得超过180个赞
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:150万
展开全部
ValidationError 提示的是validation error,应该是某些field是not null的,你没有给它赋值。建议贴上Student的model源码以及你实际操作的语句。
追问
已经贴上去了,麻烦你再帮我看下。
追答
你看下是不是必要的field没有赋值呢? s1 = Student(...)这一句能具体看下赋值了哪些变量么? django 里面blank=True不包含null=True的,所以一些field即使blank=True,只要没有声明null=True,同样不能留白。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2018-04-04
展开全部
把s2的所有字段Log出来看一眼.
再就是 常量字符串,特别是里面有非ASCII字符的,前面都加上u,windows没有U可以自动转换,Linux下面有的时候自动转不过去。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友340fdbc
2013-08-08 · TA获得超过380个赞
知道小有建树答主
回答量:242
采纳率:100%
帮助的人:148万
展开全部
插入记录用的是 INSERT 语句,更新是UPDATE语句,是不是混用了?【不确定
追问
不是啊,django下更新表都是用save而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
长学科西
2013-08-14
知道答主
回答量:6
采纳率:0%
帮助的人:3.1万
展开全部
我在自己的上面做了 ,没有发现错误呢。如果可以的话,你把你的整个代码发上来看看呢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式