2017-08-31 49 views
1

在我的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 

回答

3

作为一个选项,您可以使用自定义过滤器类作为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 
+0

真棒,正是我一直在寻找,谢谢! – JBT

1

使用日期时间,营造昨日变量,然后让所有记录这种方式。

import datetime 
yesterday = datetime.date.today() - datetime.timedelta(days=1) 

data = Modelname.objects.filter(create_date=yesterday)