タイムゾーン管理がdjango 1.4に追加されたと仮定して、問題は全く新しいものです。djangoタイムゾーンがmodel.fieldのauto_now_addとどのように動作するのですか
私はそのに障害が発生し、新しく作成されたレコードを取得しようとすると、私は単純なモデル
class Sample(models.Model):
...
date_generated = models.DateTimeField(auto_now_add = True)
を使用。
min_datetime = datetime.now() - timedelta(seconds = 300)
sample = Sample.objects.get(date_generated__gte = min_datetime)
とサーバーが警告を出します。
DateTimeField received a naive datetime (2012-06-29 15:02:15.074000) while time zone support is active.
私は、この問題の2つの解決方法を考え出しました。
settings.py
USE_TZ = False
で無効にタイムゾーンの管理が、これは常にdesierableではありません。あなたの終わりにされ
私はこの平均値をauto_nowを使用するか、私は真のUSE_TZ =を持っている場合auto_now_addすることはできませんでしょうか? – dannyroa
'auto_now'と' auto_now_add'は本質的に 'datetime.now'を使用しているようです。 DjangoにDZを認識させる機能をDjangoに挿入するのは、Djangoの部分では奇妙なことですが、このかなり重要なものは見逃していますが、この2つのkwargの運命は長い間議論されています。私の推論は、彼らは後方互換性のために(そして、プッシュバックを避けるために)残されているが、彼らには愛がないと期待しているということです。 'utcnow'を使って' default' kwargを設定するだけで、TZ対応のdatetimesが必要な場合は、 'auto_now'や' auto_now_add'について心配する必要はありません。 –
Chrisに感謝します。私は、 "デフォルト"は "auto_now"の代わりに動作するとは思えませんが、後者は常にすべての保存の時間を更新するので、 "default"はフィールドに値がないときだけです。 – dannyroa