内联管理员中的时间戳过滤

时间:2012-03-04 10:28:12

标签: python django inlines

我正在尝试管理管理控制台。

我有两个模特,场地和活动:活动可以在场地举行,活动有时间戳。

在我的管理控制台中,我使用内联添加了要在场地管理员中列出的事件。

但是,我想设置一个案例, 默认情况下 仅列出来自timestamp.now()的未来事件以及teimstamp.now之前的所有事件( )没有显示。

我目前仅限于Django 1.3,但我相信Django 1.4SimpleListFilter中有一种解决方案。

我读过可以使用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 个答案:

答案 0 :(得分:0)

如何为此目的修改查询集(将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,]