この問題は数週間オンとオフで発生しており、私のプロジェクトで発生したものとは異なります。
使用される2つのモデルには、デフォルトでtimezone.now()
に設定されているタイムスタンプフィールドがあります。
これは、エラーフラグを立てるシーケンスです。
モデル1は午後7時30分に作成されます
モデル2は午後10時に作成されますが、MySQLデータベースには午後7時30分として保存されます。
作成されるすべてのモデルのタイムスタンプは、特定の期間が経過するまで、実際の時間ではなく、午後7時30分未満に保存されます。次に、新しい時間が設定され、次のすべてのモデルにその新しい時間があります... Bizzare
問題の発見に役立つ可能性のあるいくつかの追加の詳細:
タイムゾーンからtzinfo
を取り除き、UTCに置き換えるために使用するメソッドがたくさんあります。
これは、timezone.now() - creationTime
計算を実行して、プロジェクトに「モデルはこれよりずっと前に投稿されました」という機能を作成しているためです。ただし、これが問題の原因になることはありません。
datetime.datetime.now()
を使用しても違いはないと思います。
とにかく、助けてくれてありがとう!
先週、default=date.today()
のあるフィールドに遭遇しました。括弧を削除すると(この場合はdefault=timezone.now
を試してください)、呼び出し可能オブジェクトをモデルに渡し、新しいインスタンスが保存されるたびに呼び出されます。括弧を使用すると、models.py
がロードされたときに1回だけ呼び出されます。
パラメータauto_now_add
をこのように設定するだけです。
timestamp = models.DateTimeField(auto_now_add=True)
更新:
auto_now_add
は使用しないでください。これは推奨される方法ではなく、代わりに次のようにします。
from Django.utils import timezone
timestamp = models.DateTimeField(default=timezone.now)