Используя Django, я хочу найти все опубликованные события после сегодняшнего дня, но только с ближайшего месяца, содержащего события - PullRequest
4 голосов
/ 11 марта 2011

У меня есть объект события, который имеет from_date в качестве поля, которое представляет, когда событие начинается.Что я хочу сделать, это найти ближайшее событие, а затем найти следующие предстоящие события, которые все еще в течение месяца.Вот два запроса, которые у меня есть, есть ли способ их объединить?

today = datetime.date.today()

date = Event.objects.filter(
    status='P', # Published status
    pub_date__lte=today, # Published after today, or today
    from_date__gte=today, # Starting next
).order_by('from_date').only('from_date')[:1][0].from_date

events = Event.objects.filter(
    # Published after today, with a published status, and start today or later
    pub_date__lte=today,
    from_date__gte=today,
    status='P',

    # We're only going to show one month at a time.
    from_date__month=date.month,
    from_date__year=date.year,
)

1 Ответ

1 голос
/ 16 марта 2011

Я думаю, что то, что вы уже делаете, на самом деле довольно эффективно. Механизм запросов Django должен объединять их в два SQL-запроса, по одному для каждого фильтра.

Объединение всего в один SQL-запрос не всегда делает его более эффективным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...