5

モデルに保存したいdatetime インスタンス ( where )を認識しています。tzinfo = "America/Los_Angeles"

保存する前に何らかの形で UTC に変換する必要がありますか? または、独自のタイムゾーンを認識しているため、そのまま保存できますか? 後で を使用してユーザーのタイムゾーンに変換する必要がありactivate()ますか?それとも、インスタンスが認識しているため、Django が代わりに変換してくれますか?

これに関して、どのような慣習があるのか​​、私は最も興味があります。前もって感謝します。

4

2 に答える 2

2

Django が自動的に変換してくれるので、保存する前に UTC に変換する必要はありません。TIMEZONE取得すると、設定で定義されたタイムゾーンとして取得されます。

activate()現在のタイムゾーンを表示するには、 を使用してそれをオーバーライドできますdjango.utils.timezone.get_current_timezone()

これは、データベースから取得した時刻が、オブジェクトを最初に保存するために使用した datetime オブジェクトのタイムゾーンと異なる場合があることを意味します。しかし、それはまだ同じ瞬間です。

各ユーザーのタイムゾーンがある場合は、これをユーザーのプロファイルと共に保存しactivate()DateTimeField. 取得されたオブジェクトは、適切なタイムゾーンになります。

override()または、コンテキスト マネージャーを使用することもできます。

datetimeオブジェクトを常にサーバーのタイムゾーンではなくユーザーのタイムゾーンにしたい場合は、 onを呼び出すカスタム ミドルウェアを記述します。Django はユーザーのタイムゾーンが何であるかを知る方法がなく、デフォルトでは User モデルに保存しないため、タイムゾーンを自分で保存/取得する必要があります。activate()request.user

于 2014-03-04T22:31:42.027 に答える