簡體   English   中英

Django 1.9 日期時間過濾器

[英]Django 1.9 DateTime Filter

我正在嘗試過濾包含以下字段的模型:

TEMP_START = models.DateTimeField(null=True)

我正在使用語法

x.filter(TEMP_START__date = datetime.datetime(2016, 3, 31, 8, 0, tzinfo=<UTC>))

但是,這會返回多個唯一的 TEMP_START 值。 我認為這是由於我的數據沒有時區存儲。 但是,我在我的 settings.py 文件中設置了:

TIME_ZONE = 'UTC' # 'America/Chicago'

USE_I18N = True

USE_L10N = True

USE_TZ = True

我不確定為什么此過濾器語句返回其他唯一的日期時間對象值。 我知道“__date”過濾器是 Django 1.9 的新功能。 這只是一個錯誤嗎?

__date字段查找適用於日期(僅),顧名思義。 不在日期時間對象上; 時間被忽略。

文檔,尤其是示例,也顯示了這一點:

對於日期時間字段,將值轉換為日期。 允許鏈接額外的字段查找。 獲取日期值。

例子:

Entry.objects.filter(pub_date__date=datetime.date(2005, 1, 1)) Entry.objects.filter(pub_date__date__gt=datetime.date(2005, 1, 1))

正如它所說:“需要一個日期值。”。 因此__datedatetime.date對象進行比較,而不是datetime.datetime對象。

您的datetime.datetime對象顯然被datetime.date為引擎蓋下的datetime.date對象。

使用

__contains

關鍵字似乎提供了最好的結果,我沒有遇到任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM