【问题标题】:How to customize a filter's name displayed in admin site in Django?如何自定义 Django 管理站点中显示的过滤器名称?
【发布时间】:2014-05-05 22:33:05
【问题描述】:

例如,如果我像这样在几个外键上使用过滤器:

list_filter = ['status', 'species__name', 'factor__name', 'factor__type', ]

在管理站点上将有两个过滤器,其名称显示为“名称”。

有没有人知道如何解决这个问题? (通过给他们不同的名字。)

我认为django.contrib.admin.SimpleListFilter 可能是一个解决方案,但考虑到我有 10 多个字段,例如xxx__name。这可能有点笨拙..

【问题讨论】:

    标签: python django django-admin django-admin-filters


    【解决方案1】:

    根据我的调试,我发现/python2.7/dist-packages/django/contrib/admin/templates/admin/filter.html 是负责渲染过滤器相关内容的模板。
    在这个模板中你可以找到

    {% blocktrans with filter_title=title %} By {{ filter_title }} {% endblocktrans %}

    这里每个过滤器的标题都来自filter_title
    所以要获得 filter_title 的值,你可以去
    /python2.7/dist-packages/django/contrib/admin/filters.py
    FieldListFilter 类中,您可以看到它直接将verbose_name 放入filter.title。
    给你了

    list_filter = ['status', 'species__name', 'factor__name', 'factor__type', ]

    您可以通过简单地为属于其他表并作为 Foreignkey 连接到您的模型的字段提供详细名称来解决您的问题。

    #家在这里家是第一个模型 name = models.CharField(verbose_name="Home status", --) # Out here Out 是第二个模型 name = models.CharField(verbose_name="out status", ---) #Main 这是主模型 home = models.ForeignKey(Home) out = models.ForeignKey(Out)

    所以现在如果您使用过滤器,它将显示过滤器标题为 Home status and out status

    【讨论】:

      猜你喜欢
      • 2011-04-22
      • 1970-01-01
      • 2019-08-18
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多