gpt4 book ai didi

python - Django admin 中的默认过滤器

转载 作者:IT老高 更新时间:2023-10-28 21:11:16 26 4
gpt4 key购买 nike

如何将默认过滤器选项从“全部”更改?我有一个名为 status 的字段,它具有三个值:activatependingrejected。当我在 Django admin 中使用 list_filter 时,过滤器默认设置为“全部”,但我想默认将其设置为挂起。

最佳答案

为了实现这一点并且在您的侧边栏中有一个可用的“全部”链接(即显示全部而不是显示待处理的链接),您需要创建一个自定义列表过滤器,继承来自 django.contrib.admin.filters.SimpleListFilter 并默认过滤“待处理”。这些方面的东西应该可以工作:

from datetime import date

from django.utils.translation import ugettext_lazy as _
from django.contrib.admin import SimpleListFilter

class StatusFilter(SimpleListFilter):
title = _('Status')

parameter_name = 'status'

def lookups(self, request, model_admin):
return (
(None, _('Pending')),
('activate', _('Activate')),
('rejected', _('Rejected')),
('all', _('All')),
)

def choices(self, cl):
for lookup, title in self.lookup_choices:
yield {
'selected': self.value() == lookup,
'query_string': cl.get_query_string({
self.parameter_name: lookup,
}, []),
'display': title,
}

def queryset(self, request, queryset):
if self.value() in ('activate', 'rejected'):
return queryset.filter(status=self.value())
elif self.value() == None:
return queryset.filter(status='pending')


class Admin(admin.ModelAdmin):
list_filter = [StatusFilter]

编辑:需要 Django 1.4(感谢 Simon)

关于python - Django admin 中的默认过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/851636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com