Администратор 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, я не могу вам помочь.