Reputation: 381
I have a model Transaction
with a ForeignKey to another model (TransactionState
) on state
field. So in admin.py
I have:
class TransactionAdmin(admin.ModelAdmin):
...
list_filter = ('state', )
...
In TransactionState
I have records like "paid", "unpaid", "delivered", "canceled", Etc. and it works fine but I want to be able to filter using checkboxes to allow multiple selection like "paid" OR "delivered". It's possible?
Upvotes: 17
Views: 4465
Reputation: 776
Radio buttons cannot have multiple selection, you would need to make them check boxes.
What you are looking for is making custom filters. I would suggest instead of overwriting the Filter List to contain a check form with check boxes, add a custom filter with each option as a filter. Use this link and scroll down to the SimpleListFilter and you will be able to code it with 5-10 LOC.
Upvotes: 3
Reputation: 6057
You can easily override the django admin templates to customize the admin UI.
To edit the sidebar filter, just add a templates/admin/filter.html
file, and write your custom HTML with radio buttons.
Note that this will change the sidebar filter for all models.
If you want to change the filter for a single model, you can specify a template for a ListFilter
:
class FilterWithCustomTemplate(admin.SimpleListFilter):
template = "custom_template.html"
As a reference example, check is the default template for filter.html.
Upvotes: 7