How to change the Django admin filter to use a dropdown instead of list?

后端 未结 9 855
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-13 03:58

If, for a field that you want to filter by, you have more than ~10 values, the filtering sidebar starts to be ugly and harder to use.

I\'m looking for a solution to

9条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-13 04:40

    Thanks @beholderrk, @gediminas and @jk-laiho! I packaged this into a reusable app.

    Install:

    pip install django-admin-list-filter-dropdown
    

    Enable in settings.py:

    INSTALLED_APPS = (
        ...
        'django_admin_listfilter_dropdown',
        ...
    )
    

    Use in admin.py:

    from django_admin_listfilter_dropdown.filters import (
        DropdownFilter, ChoiceDropdownFilter, RelatedDropdownFilter
    )
    
    class EntityAdmin(admin.ModelAdmin):
        ...
        list_filter = (
            # for ordinary fields
            ('a_charfield', DropdownFilter),
            # for choice fields
            ('a_choicefield', ChoiceDropdownFilter),
            # for related fields
            ('a_foreignkey_field', RelatedDropdownFilter),
        )
    

    Here's what it looks like:

    Screenshot of dropdown list filter

提交回复
热议问题