Администратор Django: фильтрация по "сейчас" в виде списка

У меня есть модель Django, которая реализует временной диапазон, например так:

class Period(models.Model):
    start_time = models.DateTimeField(_(u'start time'))
    end_time = models.DateTimeField(_(u'end time'))

У меня есть простой ModelAdmin для этого. Я хотел бы предоставить фильтр в представлении списка администраторов, который объединяет эти периоды в "будущее", "в процессе" и "в прошлом". Я могу включить фильтры даты для start_time и end_time отдельно и взломать шаблон change_list.html, чтобы обеспечить правильную строку запроса, например, для текущих периодов:

<li><a href="?start_time_lte=[now]&end_time_gt=[now]">In Progress</a>

У меня вопрос, есть ли способ предоставить что-то для [сейчас], которое оценивается на стороне сервера при запуске QuerySet? Я знаю, что вы можете передавать вызовы в фильтр QuerySet, но кажется, что эта функция недоступна в FilterSpecs. Я ненавижу вставлять строку даты и времени в строку запроса, потому что я знаю, что мои администраторы добавят в закладки отфильтрованные ссылки и запутаются.

1 ответ

Решение

Вы захотите использовать новую функцию list_filter, потому что там меньше взлома и тому подобное.

Если вы застряли с Django 1.2, я не могу вам помочь.

Другие вопросы по тегам