uib*_*boy 8 python django django-admin
我是Django的新手,并且有一个带有DateTime字段的模型,该字段显示在django admin中.
在list_filter选项中,当我指定fieldname时,我得到了带有4个链接的日期字段的基本Django过滤器接口(今天,本月,过去7天等)
我现在想要添加"未来7天"选项.这将需要通过扩展DateFieldListFilter类进行微小的调整.但是,Django抛出系统检查(admin.E114)'list_filter [0]'的值不能继承'FieldListFilter'.当我试图扩展它.
在一些搜索之后似乎可能的唯一方法是扩展SimpleListFilter类,但对于这么小的事情看起来似乎很多工作.(因为我必须复制已经在DateFieldListFilter中处理过的功能)
有没有更简单的方法来实现这一目标?
假设我们有一个模型Book,其published_at字段是 a DateTimeField。然后你可以通过做这样的事情来实现这种类型的过滤(代码基于 DateFieldListFilter,如https://github.com/django/django/blob/4ad2f862844d35404e4798b3227517625210a72e/django/contrib/admin/filters.py 中所示)
import datetime
from django.contrib import admin
from django.contrib.admin.filters import DateFieldListFilter
from django.utils.translation import gettext_lazy as _
class MyDateTimeFilter(DateFieldListFilter):
def __init__(self, *args, **kwargs):
super(MyDateTimeFilter, self).__init__(*args, **kwargs)
now = timezone.now()
# When time zone support is enabled, convert "now" to the user's time
# zone so Django's definition of "Today" matches what the user expects.
if timezone.is_aware(now):
now = timezone.localtime(now)
today = now.date()
self.links += ((
(_('Next 7 days'), {
self.lookup_kwarg_since: str(today),
self.lookup_kwarg_until: str(today + datetime.timedelta(days=7)),
}),
))
class BookAdmin(admin.ModelAdmin):
list_filter = (
('published_at', MyDateTimeFilter),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1739 次 |
| 最近记录: |