Временная фильтрация в админке для встроенных

Я пытаюсь управлять консолью администратора.

У меня есть две модели: место проведения и событие: события могут происходить на местах, а события имеют метку времени.

В своей консоли администратора я добавил события, которые будут перечислены в администраторе мест с помощью встроенных функций.

Однако я хочу настроить случай, когда по умолчанию будут перечислены только события из 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,]
Другие вопросы по тегам