0

これをどのように理解すればよいですか?そして、これはどのように起こりますか?django シェルに入ります:

>>> 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 シェルに再度入ります。

>>> 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

4 に答える 4

0

問題はキャッシュ モジュールにありました。奇妙ですが、キャッシングミドルウェアがプラグインされておらず、メソッドの保存にキャッシュが使用されていません。使用されたdjango.core.cache.backends.locmem.LocMemCacheモジュールでした。壊れているか、いくつかの奇妙な機能がある可能性があります。わかりません。memcached モジュールを試してみます。サイトのキャッシュをオフにすることなく問題を修正する必要があります (希望します)。

于 2013-02-13T11:42:38.517 に答える
0

シェルを閉じた後もデータが残っている場合は、データがデータベースに保存されていない可能性が非常に高くなります。settings.py をチェックして、正しい mysql データベースに保存していることを確認できますか?

于 2013-02-12T10:45:31.577 に答える
0

シェル セッションは、単一のデータベース トランザクションです。トランザクションが分離されているため、外部の接続には変更が反映されません。トランザクションをコミットする必要があります。最も簡単な方法は、シェルを終了して再起動することです。

通常のリクエストでは、Django はリクエストの最後に自動的にコミットするため、この動作は問題になりません。

于 2013-02-12T17:11:52.967 に答える