Home > Django > [django]DateTimeFieldのdefault

[django]DateTimeFieldのdefault

  • 2009-02-03 (火) 21:15
  • Django

DateTimeFieldのdefaultに、
xxx = models.DateTimeField(default=datetime.datetime.now())
と指定していたら、なんかおかしな値が入る。

具体的には同じ日付のデータがたくさん。すべてのデータが同じ日付な訳ではないけど。
ちなみに、テスト環境ではちゃんとしたデータが入る。

datetime.datetime.now()が評価されるのはプロセスが起動してクラスを読み込んだときっぽいね。
そりゃそんな気がするね。
だからプロセスごとに違う時間だけど、同じ時間がたくさん入るのか。
テスト環境は、1アクセスごとにプロセス再起動の設定になってるから問題ない様子。

auto_now_add=Trueとか使わなきゃいかんかなーと思ったら以下の情報を発見。
モデルフィールドのデフォルト値 - 偏った言語信者の垂れ流し

defaultの値を毎回評価するためには、関数を指定する。

callableかどうかを判断して、適切に関数を呼び出してくれるらしい。
解決。
ありがとうございました。
てことは、defaultは自分で作った関数とかも使えそうだね。

ところで、auto_nowとかauto_now_addとか無くなるって噂を見たことがある気がしてたんだけど、ドキュメントを見る限り残ったのかな?使っても良さげ?

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.joyfullife.jp/archives/2009/02/03211536.php/trackback
Listed below are links to weblogs that reference
[django]DateTimeFieldのdefault from 30からのBlog

Home > Django > [django]DateTimeFieldのdefault

Search
Feeds
Meta

Return to page top