gpt4 book ai didi

python - Django 管理列表过滤器删除所有选项

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:55 25 4
gpt4 key购买 nike

正如您从下面的屏幕截图中看到的那样,当使用和自定义 django 管理过滤器时,如下所示:

class DealExpiredListFilter(admin.SimpleListFilter):
title = 'expired'

parameter_name = 'expired'

def lookups(self, request, model_admin):
return (
('yes', 'yes'),
('no', 'no'),
)

def queryset(self, request, queryset):
if self.value() == "yes":
return queryset.filter(end_date__lt=timezone.now())
elif self.value() == "no":
return queryset.exclude(end_date__lt=timezone.now())

Django 会在任何情况下插入一个“全部”选项(这对 %99 的时间来说很好)。我想重命名或删除屏幕截图中可见的“全部”选项

scrrenshot

最佳答案

我最终通过浏览可以在 [here in this link][1] 中找到的源代码并覆盖 choices 函数解决了这个问题。在添加到我的过滤器类的代码中,我只更改了“全部”选项以显示"is":

from django.utils.encoding import force_text

def choices(self, changelist):
"""Copied from source code to remove the "All" Option"""
yield {
'selected': self.value() is None,
'query_string': changelist.get_query_string({}, [self.parameter_name]),
'display': 'Yes',
}
for lookup, title in self.lookup_choices:
yield {
'selected': self.value() == force_text(lookup),
'query_string': changelist.get_query_string({self.parameter_name: lookup}, []),
'display': title,
}

正如 Linh 所提到的:对于只想删除所有选项的任何人,只需删除 'display': 'Yes',从 choices 函数中的第一个 yield{}[1]: https://github.com/django/django/blob/main/django/contrib/admin/filters.py#L44

关于python - Django 管理列表过滤器删除所有选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53821727/

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