假设我有一个这样的模型:
# models.py
class Customer(models.Model):
customer_name=models.CharField(max_length=50)
licence_key=models.CharField(max_length=100)
exp_date=models.DateTimeField(blank=True, null=True)
def __unicode__(self):
return self.customer_name
我希望在管理网站中有一个自定义列表过滤器,向客户显示他们的exp_date
已通过。它应该有两个参数valid
和invalid
,并将exp_date
与今天的日期进行比较并显示结果。我读过它可以通过simplelistfilter来完成,但我无法弄清楚如何。
谢谢你,对不起我的英文
答案 0 :(得分:2)
尝试以下代码。它将为您提供过滤有效/无效客户列表。
class ExpiryDateFilter(admin.SimpleListFilter):
title = _('Title name')
parameter_name = 'exp_date'
def lookups(self, request, model_admin):
"""
List of values to allow admin to select
"""
return (
('valid', _('All Valid')),
('invalid', _('All Invalid')),
)
def queryset(self, request, queryset):
"""
Return the filtered queryset
"""
if self.value() == 'valid':
return queryset.filter(exp_date__gt=datatime.datatime.now())
elif self.value() == 'invalid':
return queryset.filter(exp_date__lt=datatime.datatime.now())
else:
return queryset
在admin类中添加如下所示的列表过滤器。
class youModelAdminClass(admin.ModelAdmin):
list_filter = [ExpiryDateFilter]
list_display = ['CustomerValidity']
然后使用Django模型注册模型管理员。
admin.site.register(ModelClassName, youModelAdminClass)
希望这会有所帮助。