Django / Python - Проверьте дату на текущей неделе - PullRequest
10 голосов
/ 06 февраля 2012

Я хотел бы сделать что-то вроде этого:

entries = Entry.objects.filter(created_at__in = current_week())

Как сделать это для хорошей производительности.Спасибо!

Редактировать: Я до сих пор не знаю, для функции current_week().

Ответы [ 3 ]

25 голосов
/ 06 февраля 2012

Используйте __range.Сначала вам нужно будет рассчитать начало и конец недели:

import datetime
date = datetime.date.today()
start_week = date - datetime.timedelta(date.weekday())
end_week = start_week + datetime.timedelta(7)
entries = Entry.objects.filter(created_at__range=[start_week, end_week])
3 голосов
/ 20 апреля 2017

Начиная с django 1.11, вы можете делать:

Entry.objects.filter(created_at__week=current_week)

Это даст вам неделю с понедельника по воскресенье, согласно ISO-8601.

Для запроса на текущую неделю:

from datetime import date
current_week = date.today().isocalendar()[1] 

isocalendar () вернет кортеж с 3 элементами: (год ISO, номер недели ISO, день недели ISO).

1 голос
/ 07 октября 2014

Да, этот вопрос 2 года назад. Сегодня с большим опытом я рекомендую использовать arrow с меньшими трудностями при обработке даты.

Оформить заказ: https://github.com/crsmithdev/arrow

...