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

求大神帮忙,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() 报错了

第1个回答  2013-08-08
ValidationError 提示的是validation error,应该是某些field是not null的,你没有给它赋值。建议贴上Student的model源码以及你实际操作的语句。追问

已经贴上去了,麻烦你再帮我看下。

追答

你看下是不是必要的field没有赋值呢? s1 = Student(...)这一句能具体看下赋值了哪些变量么? django 里面blank=True不包含null=True的,所以一些field即使blank=True,只要没有声明null=True,同样不能留白。

第2个回答  推荐于2018-04-04
把s2的所有字段Log出来看一眼.
再就是 常量字符串,特别是里面有非ASCII字符的,前面都加上u,windows没有U可以自动转换,Linux下面有的时候自动转不过去。本回答被网友采纳
第3个回答  2013-08-08
插入记录用的是 INSERT 语句,更新是UPDATE语句,是不是混用了?【不确定追问

不是啊,django下更新表都是用save而已

第4个回答  2013-08-14
我在自己的上面做了 ,没有发现错误呢。如果可以的话,你把你的整个代码发上来看看呢。
相似回答