我的模型上有一个布尔字段,表示某人是否取消了他们的会员资格。我正在尝试创建一个自定义 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 个选项:全部、是和否。
我希望默认设置“否”选项或不设置任何选项。相反,默认情况下始终设置“全部”选项。是否有一些没有技巧的方法来设置默认过滤器选项或类似的东西。
基本上在管理员中查看成员时,我只想默认显示活动(未取消)。如果他们单击“全部”或“是”,那么我想显示已取消的。
更新:请注意,这与Django admin中的问题 Default filter 相同,但我这个问题现在已经 6 岁了。接受的答案被标记为需要 Django 1.4。我不确定该答案是否仍适用于较新的 Django 版本,或者仍然是最佳答案。
考虑到另一个问题的答案的年龄,我不确定我们应该如何进行。我认为没有任何方法可以将两者合并。