我正在嘗試過濾查詢集以獲取今年的所有帖子。
def thisYearQuerySet(objects):
start_day = datetime.date(datetime.date.today().year, 1, 1)
end_day = datetime.date(datetime.date.today().year, 12, 31)
return objects.filter(date__range=[start_day, end_day])
django 抱怨start_day和end_day宣告可能會沖突django.utils.timezone,我認為這沒什么大不了的。
但是警告很煩人,任何關于解除它的建議(不是禁用 django 警告)將不勝感激。像,如何獲得一年的第一天和最后一天django.utils
全面警告
RuntimeWarning: DateTimeField Model.date received a naive datetime (2021-01-01 00:00:00) while time zone support is active.
RuntimeWarning: DateTimeField Model.date received a naive datetime (2021-12-31 00:00:00) while time zone support is active.
uj5u.com熱心網友回復:
django 關于 start_day 和 end_day 宣告的抱怨可能會與 django.utils.timezone 沖突,我認為這沒什么大不了的。
這取決于您接受的風險水平。通過不考慮用戶的時區,thisYearQuerySet可以在臨近新年時回傳去年或當年的物件。
這是因為服務器可能在 GMT 時間運行,這意味著在 2022-01-01 00:00:00T00:00,它將開始回傳日期為 2022 年的資料。但是任何使用該應用程式的美國人都會知道年份到 2021 年還有 4 個多小時,并且希望在他們自己的午夜之前看到 2021 年的資料。
但是,如果您試圖消除警告并且不關心上述情況,請不要在獲取今天/現在時使用 python datetime 函式。用:
from django.utils import timezone
now = timezone.now()
today = timezone.now().date()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/370648.html
