私はある種のキャッシングだと思った動作に出くわしましたが、それは私を欺くデータベーストランザクションであることが判明しました。
私は別のプロセスでは、アイテムがデータベースに追加されますし、問題を抱えていた、と私は他のプロセスの進行状況を監視したかったので、私はDjangoのシェルを開いて、次を発行:
>>> MyData.objects.count()
74674
>>> MyData.objects.count()
74674
実際にデータベースに入っていても、値は変更されませんでした。少なくとも、私がMySQLの& djangoの設定をしていて、私がトランザクション中で、トランザクションを開いたときにデータベースの「スナップショット」しか見ないことに気づいた。
djangoのビューでは自動コミットの動作が定義されていたため、次回のビューでは別のトランザクションであるため、スナップショットのみを表示することができました。しかし、自動的にコミットしていないコードの場合、このトランザクションで行われた変更を除いてdbの変更は見られません。
このような状況になる可能性のある人のために、私はこの答えを捨てると思っていました。
、解決トランザクションをコミットし、手動でそのように行うことができるには:
>> from django.db import transaction
>> transaction.enter_transaction_management()
>> transaction.commit() # Whenever you want to see new data
[どのように私はすべてのキャッシュを無視してデータを再ロードするためにはDjangoを強制しますか?]の可能な重複(http://stackoverflow.com/questions/3346124/how-do-i-force- django-to-ignore-any-caches-and-reload-data) –