我应该如何理解这一点?这怎么可能发生? 进入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'
>>>
一切似乎都好。但现在进入dbshell:
mysql> select user_id, status from customauth_profile where user_id=1;
+---------+--------+
| user_id | status |
+---------+--------+
| 1 | 34566 |
答案 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)
现在正在为我工作,希望能为您提供帮助。