2012-04-06 4 views
7

djangoを使って1.4私はdatetimefieldを持つモデルを持っています。デフォルト値として使用するdjango.utils.timezoneをインポートしました。django.utils.timezoneは素朴な日付を返しますか?

from django.utils import timezone 
date = models.DateTimeField(default=timezone.now) 

ただし、DateTimeFieldがナイーブな日付を受け取ったという警告が表示されます。 それは認識して日付時刻

答えて

2

djangosは、既定ではフィールドがNULLではないため、認識できないデフォルトの日付値を入れています。真のヌル設定すると、それは単なる警告イマイチが上がって代わりにNULLにする日付を設定することを意味:私はテストを実行したときに私の場合は

date = models.DateTimeField(default=timezone.now, null=True) 
+2

私は無知かもしれないが、私はnullが何を持っているのか分からないtimezone.now()は素朴です。 Null = Trueの場合.now()は認識オブジェクトを返しますか? – AllTradesJack

+0

djangoが入れていたデフォルト値はタイムゾーンを認識していませんでした – mobiletim

+0

@mobiletimこれで少し混乱していますが、なぜ 'null = True'に設定すればエラーになりますか? –

-1

私は、これはサイドステップの問題を知っているが、あなたの代わりに自分のフィールド上auto_now_add=Trueを試してみましたか?あなたは何をしたいのためにdefaultを使用する必要はありません。

一方、あなたのバージョンでなければなりません。実際にはUSE_TZ=Trueであれば動作します。

私はうまくいくと言いたいと思いますが、dateフィールドを直接設定するのではなく、デフォルトから設定するところからRunTimeWarningを取得します。より正確に警告がトリガーされるタイミングを絞り込んでください。

+0

auto_now_addはタイムゾーン対応のDjangoアプリケーションのために悪いスタイルです – fangsterr

+0

@fangsterrなぜそう思うでしょうか?あなたの推理についても説明しておけばもっと便利です。 –

+0

http://stackoverflow.com/questions/10195020/why-django-lint-tells-me-the-auto-now-add-is-deprecated – fangsterr

0

、私はこの問題を受け続けました。これは、タイムゾーンの代わりにdatetimeを間違って使用した過去の移行のためです。私は、警告の原因となるものの前にマイグレーションに戻り、削除して、再度マイグレーションを実行しました。これは私の問題を解決しました。

関連する問題