【发布时间】:2013-09-07 08:45:33
【问题描述】:
我的模型上有一个布尔字段,表示某人是否取消了他们的会员资格。我正在尝试创建一个自定义 SimpleListFilter 以允许过滤此字段。
但是,我真的只想显示那些默认没有取消的。有没有办法默认选择“否”选项?到目前为止,这是我的过滤器:
class CanceledFilter(SimpleListFilter):
title = 'Canceled'
# Parameter for the filter that will be used in the URL query.
parameter_name = 'canceled'
def lookups(self, request, model_admin):
return (
(True, 'Yes'),
(False, 'No'),
)
def queryset(self, request, queryset):
if self.value() is True or self.value() is None:
return queryset.filter(canceled=True)
if self.value() is False:
return queryset.filter(canceled=False)
编辑: 我应该更清楚一点。我专门尝试在管理界面中执行此操作。当我在管理员中将上述过滤器添加为 list_filter 时。我在管理页面的一侧有一个过滤器,有 3 个选项:全部、是和否。
我希望默认设置“否”选项或不设置任何选项。相反,默认情况下始终设置“全部”选项。是否有一些没有技巧的方法来设置默认过滤器选项或类似的东西。
当他们查看成员时,基本上在管理员中,我只想默认显示活动(未取消)。如果他们点击“全部”或“是”,那么我想显示已取消的。
更新: 请注意,这与问题Default filter in Django admin 相同,但我这个问题现在已经 6 岁了。接受的答案被标记为需要 Django 1.4。我不确定该答案是否仍适用于较新的 Django 版本,或者仍然是最佳答案。
考虑到另一个问题的答案年龄,我不确定我们应该如何进行。我认为没有任何方法可以将两者合并。
【问题讨论】:
-
我添加了一个更新来解释重复的情况。问题是相同的,但另一个现在已经很老了。我不确定我们应该如何进行。
-
对旧问题的最高投票答案(不是被接受的答案)仍然有效(Django 1.8) - 正如我在那里评论的那样。让我们把决定权交给版主。 ;)
-
同意,让我们把它留给版主。关于这两个问题都有很好的信息,所以希望有一种方法可以合并它们或类似的东西。
标签: django django-admin django-admin-filters