将'昨天'字段添加到Django管理日期列表筛选器
问题描述:
在我的Django应用程序中,在管理员中,对于我的某个模型,我允许通过其“create_date”字段进行筛选。 Django默认给我一些选项(今天,过去7天,本月,今年)。我想简单地添加选项以选择“Yesterday”。我查看了关于同一问题的其他堆栈溢出问题,但他们都在寻找按日期范围搜索的功能,而且我只想要一个预加载选项。他们是否在管理员类中配置此模型以覆盖其某些过滤器功能?将'昨天'字段添加到Django管理日期列表筛选器
管理类
class User_LikeAdmin(admin.ModelAdmin):
def fb_view_link(self, obj):
if len(obj.user_facebook_link) > 2:
return u"<a href='%s' target='_blank'>Facebook Page</a>" % obj.user_facebook_link
else:
return ""
fb_view_link.short_description = ''
fb_view_link.allow_tags = True
list_display = ('vehicle', 'user', 'fb_view_link', 'dealer', 'create_date')
list_filter = ('create_date', ('vehicle__dealer', custom_titled_filter('Dealer')))
raw_id_fields = ('vehicle', 'user')
actions = [export_csv]
def dealer(self, obj):
return obj.vehicle.dealer
答
作为一个选项,您可以使用自定义过滤器类作为documentation
class User_LikeAdmin(admin.ModelAdmin):
list_filter = (('create_date', CustomDateFieldListFilter),)
提到您可以扩展DateFieldListFilter
from django.contrib.admin.filters import DateFieldListFilter
class CustomDateFieldListFilter(DateFieldListFilter):
# Your tweaks here
答
使用日期时间,营造昨日变量,然后让所有记录这种方式。
import datetime
yesterday = datetime.date.today() - datetime.timedelta(days=1)
data = Modelname.objects.filter(create_date=yesterday)
真棒,正是我一直在寻找,谢谢! – JBT