我有一個模型,其中包含datefield
。我試圖獲取包含當前周的該模型的查詢集(從星期一開始)。Django的queryset過濾ISO周編號
如此以來,Django的datefield
包含簡單datetime.date
模型假設我用.isocalendar()
進行過濾。從邏輯上講,這正是我想要的,沒有額外的比較和當前一週的計算。
所以我想基本上做的是力.filter
聲明在此邏輯的行爲:
if model.date.isocalendar()[2] == datetime.date.today().isocalendar()[2]
...
然而,如何把它寫過濾語句中? .filter(model__date__isocalendar=datetime.date.today().isocalendar())
會給出錯誤的結果(與今天比較而不是本週相同)。
挖真正http://docs.python.org/library/datetime.html我還沒有發現任何其他工作日選項...從文件
注:
date.isocalendar()返回一個3元組(ISO年,ISO周編號,ISO 工作日)。
更新:
雖然我不喜歡使用範圍的解決方案但它是最好的選擇。 但在我的情況下,我做了一個變量,標誌着一週的開始,只是看起來更大或相等的價值,因爲如果我正在尋找本週的比賽。在給出星期數的情況下它將需要兩端。
today = datetime.date.today()
monday = today - datetime.timedelta(days=today.weekday())
... \
.filter(date__gte=monday)
我不知道,如果ORM的支持,但你可以回退原始查詢,如果它不https://docs.djangoproject.com/en/dev/topics/db/sql/ – dm03514
我知道這個選項dm03514,但我寧願寫我自己的過濾器,然後。這也是一個選項,但我要求知道也許有可能在Django中使用默認動作來實現這一點,而不用擴展它。 – JackLeo
順便說一句,有很好的python dateutil模塊,可能會有所幫助http://pypi.python.org/pypi/python-dateutil – aisbaa