如何移除django-filter表单字段标签的额外关键词并保留verbose_name?
解决Django Filters中自定义lookup导致标签显示异常的问题
我之前也碰到过一模一样的问题!当你用django_filters.CharFilter(lookup_expr='icontains')自定义搜索类型时,模板里的{{ field.label }}会自动在模型设置的verbose_name后面追加“[字段名] contains”,哪怕你已经在模型里明确指定了verbose_name='Some field',过滤器还是会修改标签显示。
解决方案
在项目的settings.py文件中添加以下代码,自定义lookup的显示文本:
def FILTERS_VERBOSE_LOOKUPS(): from django_filters.conf import DEFAULTS verbose_lookups = DEFAULTS['VERBOSE_LOOKUPS'].copy() verbose_lookups.update({ 'icontains': '', # 将icontains对应的后缀设为空,避免追加多余文本 # 若有其他lookup类型需要调整,可在此继续添加键值对 }) return verbose_lookups
原理说明
Django Filters默认会给不同的lookup类型添加对应的描述后缀,通过自定义FILTERS_VERBOSE_LOOKUPS函数,我们可以覆盖默认的配置,把icontains对应的后缀设置为空字符串,这样过滤器就不会修改你在模型中定义的verbose_name,模板里的{{ field.label }}就会正常显示你设置的标签内容了。
内容的提问来源于stack exchange,提问作者Dmitrii
相关产品推荐
相关产品推荐

