[英]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))
正如它所說:“需要一個日期值。”。 因此__date
與datetime.date
對象進行比較,而不是datetime.datetime
對象。
您的datetime.datetime
對象顯然被datetime.date
為引擎蓋下的datetime.date
對象。
使用
__contains
關鍵字似乎提供了最好的結果,我沒有遇到任何問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.