Временная фильтрация в админке для встроенных
Я пытаюсь управлять консолью администратора.
У меня есть две модели: место проведения и событие: события могут происходить на местах, а события имеют метку времени.
В своей консоли администратора я добавил события, которые будут перечислены в администраторе мест с помощью встроенных функций.
Однако я хочу настроить случай, когда по умолчанию будут перечислены только события из timestamp.now() в будущем, а все события до teimstamp.now() не будут показаны.
Я ограничен Django 1.3
на данный момент, но я верю Django 1.4
имеет тип решения в SimpleListFilter
,
Я где-то читал, что DateFieldFilterSpec
можно использовать, но документация и примеры очень отсутствуют. (Можете ли вы указать мне некоторые ссылки, если у вас есть?)
в python
код ниже нет никакой связи между импортом DateFieldFilterSpec
к коду, показанному ниже, но я понятия не имею, где и как они связаны.
admin.py
from django.contrib.admin.filterspecs import DateFieldFilterSpec
class eventInline(admin.TabularInline):
list_filter = ('now')
model = event
extra = 1
class VenueAdmin(admin.ModelAdmin):
inlines = [eventInline,]
Когда я использую приведенный выше код, я просто получаю все события, кажется, что нет никакой фильтрации.
1 ответ
Как насчет изменения набора запросов для этой цели (заменить eventdate
с именем поля, которое содержит дату события):
from datetime import datetime
from django.contrib import admin
class eventInline(admin.TabularInline):
def queryset(self, request):
qs = super(eventInline, self).queryset(request)
return qs.filter(eventdate__gte=datetime.now)
model = event
extra = 1
class VenueAdmin(admin.ModelAdmin):
inlines = [eventInline,]