Opened 12 years ago
Last modified 2 months ago
#19755 assigned New feature
Incremental filter
Reported by: | Owned by: | Przemysław Suliga | |
---|---|---|---|
Component: | contrib.admin | Version: | dev |
Severity: | Normal | Keywords: | filter, admin |
Cc: | suligap@…, Collin Anderson | Triage Stage: | Design decision needed |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | yes |
Easy pickings: | no | UI/UX: | yes |
Description
Would be a good feature to have filter's value that change incrementally when user select one of them.
I try to explain with an example:
class Person(models.Model): name = models.CharField() hair_color = models.CharField() eye_color = models.CharField() class PersonAdmin(admin.ModelAdmin): list_filter = ["hair_color", "eye_color"]
At first I'll see all hair color and eye color values in the filter.
When I select an hair color value from the filter I'll see only person with that hair color.
I would view in the eye color filter only distinct values of eye colors of person that have hair color I selected from the filter.
Attachments (1)
Change History (13)
comment:1 by , 12 years ago
Triage Stage: | Unreviewed → Design decision needed |
---|
comment:2 by , 12 years ago
Sorry for my ambiguous description.
You're example it's ok and I hope my idea will be implemented in Django 1.6 !
comment:3 by , 12 years ago
I've found it useful to select several filters and check that no records matched. I think there's some value in showing all the options even if some of them don't have matching records.
comment:4 by , 12 years ago
I think both cases are useful. You could choose one of two cases specifying it in the code ?
comment:5 by , 12 years ago
This is a new feature, I suggest starting a discussion on the django-developers mailing list to see if it gets some traction.
A patch would help (at least a proof of concept).
comment:6 by , 12 years ago
I'm sorry but I'm not a Django core developer and I'm not able to provide a proof of concept.
I hope you can submit this new feature on the django-developers mailing list and discuss with other django core developer.
comment:7 by , 12 years ago
Large parts of development of Django is done by people who aren't core developers :)
comment:8 by , 12 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Since no one is sufficiently interested in the idea to write a patch, or even send a proposal to django-developers, I'm going to close this feature request.
by , 12 years ago
Attachment: | 19755.diff added |
---|
comment:9 by , 12 years ago
Cc: | added |
---|---|
Has patch: | set |
Resolution: | wontfix |
Status: | closed → new |
Patch makes all default FieldListFilter
s incremental if list_filter_incremental
option is True
for particular ModelAdmin
.
Incremental filters will contain only choices which when clicked will result in non-empty changelist.
comment:10 by , 12 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
I would be happy to finish this patch if it gets any traction.
comment:11 by , 6 years ago
Cc: | added |
---|---|
Patch needs improvement: | set |
comment:12 by , 2 months ago
The queries to discover empty categories are now done in Django 5.0, when facets are enabled: https://docs.djangoproject.com/en/5.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.show_facets .
Perhaps facets could automatically hide empty categories?
I was just about to close this as worksforme, because your description was a bit ambiguous -- you're proposing to remove choices from the list filters if you're already filtering on another value and the filtered set no longer contains all the choices.
i.e. you have three people:
and when you filter on brown hair, the list filter for eye color no longer lists brown, as there are now only two people in the filtered set and they have blue and hazel eyes.
Seems like an OK idea, though it does require backwards-incompatible changes to django.contrib.admin. Marking as DDN.