3

ここに画像の説明を入力

上記は、降順で管理インターフェイスのテーブルの 1 つですid(最近のレコードが一番上にあります)。そして、これが私がモデルオブジェクトを作成して保存するために使用した方法です。

notification = Notification(from_user=from_user, to_user=to_user,
                            created_date=datetime.now())
notification.save()

このテーブルへのすべての挿入は、さまざまなシグナル ハンドラNotificationでのみ行われます。post_saveこのような矛盾は生じませんか?

TIME_ZONE = 'GMT'django 1.3.2 で使用しています。モデルのオプションを試すこともできauto_now_add=Trueますが、その前に、なぜこれが起こっているのか知りたいだけです。

4

3 に答える 3

5

auto_now_add良いアプローチではありません。使用は避けてください。最良の方法は、デフォルト値の設定を使用することです。

from django.utils import timezone

date_created = models.DateTimeField(default=timezone.now)

django.utils.timezoneタイムゾーン設定に従って日時を保存します。

()その後の欠落timezone.nowは、モデルに callable を渡しているためであり、新しいインスタンスが保存されるたびに呼び出されることに注意してください。括弧を使用すると、models.pyロード時に 1 回だけ呼び出されます。This questionは、この問題をより詳細に説明しています。

于 2013-02-05T12:35:48.187 に答える
1

これは、Python のランタイム環境の処理方法によるものだと思います。うまくいけば、誰かがそれを繰り返すことができます。あなたが提案したように、 auto_add_now=True が解決策になるはずです。

于 2013-02-05T12:30:05.607 に答える