在django模型中保存数据实际上并没有保存

时间:2013-02-12 09:49:29

标签: django orm save

我应该如何理解这一点?这怎么可能发生? 进入django shell:

>>> from customauth.models import Profile
>>> p = Profile.objects.get(user_id=1)
>>> p.status
u'34566'
>>> p.status = 'qwerty'
>>> p.status
'qwerty'
>>> p.save()
>>> p.status
'qwerty'
>>> p = Profile.objects.get(user_id=1)
>>> p.status
u'qwerty'
>>> 

退出并再次进入django shell:

>>> from customauth.models import Profile
>>> p = Profile.objects.get(user_id=1)
>>> p.status
u'qwerty'
>>> 

一切似乎都好。但现在进入dbshel​​l:

mysql> select user_id, status from customauth_profile where user_id=1;
+---------+--------+
| user_id | status |
+---------+--------+
|       1 | 34566  |

4 个答案:

答案 0 :(得分:0)

如果在关闭shell后数据仍然存在,则数据不太可能不会保存到数据库中。你能检查你的settings.py并确保你保存到正确的mysql数据库吗?

答案 1 :(得分:0)

shell会话是单个数据库事务。由于事务隔离,外部的连接将看不到更改。您需要提交事务 - 最简单的方法是退出shell并重新启动。

在正常请求中,Django会在请求结束时自动提交,因此这种行为不是问题。

答案 2 :(得分:0)

缓存模块存在问题。奇怪,但没有缓存中间件被插入,缓存不用于保存方法。 曾使用django.core.cache.backends.locmem.LocMemCache模块,可能是它破碎或有一些奇怪的功能,我不知道。将尝试memcached模块,它应该(我希望)修复问题,而无需在网站上切换缓存。

答案 3 :(得分:0)

我遇到了同样的问题,我正在使用Django和Mongo ... object.save()之后数据并没有保留...它们,我用它来解决:

object.save_base(force_update=True)

现在正在为我工​​作,希望能为您提供帮助。