2017-11-30 17 views
0

前日にフィルタリングされ、そして、私は2017年11月20日ジャンゴモデルの日付の日は、私がDateTimeField型でモデルを持っている

In [23]: my_obj.date_field 
Out[23]: datetime.datetime(2017, 11, 20, 0, 0, 1, tzinfo=datetime.timezone.utc) 

しかし、私はdate_fieldでオブジェクトを選択することにより、取得しようとすると、 'にそれを設定していますS日= 20、Djangoは私がdate_fieldの日= 19を持つ要素を選択した場合、それは私のオブジェクトを検索し、しかし要素

In [11]: MyObj.objects.filter(date_field__day=20) 
Out[11]: <QuerySet []> 

を見つけることができません。

In [12]: Regime.objects.filter(start_date__day=19) 
Out[12]: <QuerySet [my_obj]> 

誰かがこの奇妙な動作を説明できますか?これは予想される動作ですか?

+1

あなたのアプリはタイムゾーンに対応していますか?そうであれば、タイムゾーン設定のためかもしれません。 –

答えて

0

時間が0, 0, 1に設定されているため、これは明らかにタイムゾーンの問題です。 Djangoは何のオブジェクトがあなたのアプリケーションに応じて、11月20

のご日をに属していないことを伝えるために右であるので

あなた自身のタイムゾーンは、UTCではない、これはあるいは意図行動であってもなくてもよいです。たとえば、フォーラムの投稿を追跡している場合は、タイムゾーン内のものを見るのが理想的です。

あなたがフィールド「date_field」に名前を付けたので、それを避けたい場合は、時間について気にしないと仮定しているので、DateTimeFieldの代わりにDateFieldを使用してください。

関連する問題