假设我有一个像这样的模型:
# 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完成,但我不知道如何做。谢谢你,我的英语不好意思
最佳答案
试试下面的代码。它将为您提供有效/无效客户列表的过滤条件。
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)
希望这会有所帮助。
关于python - django SimpleListFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36527956/