python - django SimpleListFilter

标签 python django

假设我有一个像这样的模型:

# 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已通过。例如,它应该具有两个参数validinvalid,并将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/

相关文章:

Django 注册 "remember me"

python - 在生成 Django 管理 URL 时覆盖查询集过滤器

android - 在 Python 中获取精确的 Android GPS 位置

异构列表元素的 Python 排列

django - Django Admin 中的列排序

json - 超出范围的浮点值与 Django 渲染不兼容 JSON

python - Django 类型错误 : allow_migrate() got an unexpected keyword argument 'model_name'

python - 具有挑战性的django查询集构建

python - 如何在 python 中打印 3x3 数组?

python - 如何在Python中根据用户输入的任意级别创建多级随机嵌套列表