Opened 4 years ago

Last modified 4 years ago

#19755 assigned New feature

Incremental filter

Reported by: paulox@… Owned by: Przemysław Suliga
Component: contrib.admin Version: master
Severity: Normal Keywords: filter, admin
Cc: suligap@… Triage Stage: Design decision needed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
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)

19755.diff (15.9 KB) - added by Przemysław Suliga 4 years ago.

Download all attachments as: .zip

Change History (11)

comment:1 Changed 4 years ago by Nick Sandford

Triage Stage: UnreviewedDesign decision needed

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:

[{
    'name': 'Bob',
    'hair_color': 'brown',
    'eye_color': 'blue'
}, {
    'name': 'Bruce',
    'hair_color': 'brown',
    'eye_color': 'hazel'
}, {
    'name': 'Brett',
    'hair_color': 'ginger',
    'eye_color': 'brown'
}]

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.

comment:2 Changed 4 years ago by paulox@…

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 Changed 4 years ago by Aymeric Augustin

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 Changed 4 years ago by paulox@…

I think both cases are useful. You could choose one of two cases specifying it in the code ?

comment:5 Changed 4 years ago by Aymeric Augustin

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 Changed 4 years ago by paulox@…

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 Changed 4 years ago by Aymeric Augustin

Large parts of the development of Django are done by people who aren't core developers :)

Last edited 4 years ago by Aymeric Augustin (previous) (diff)

comment:8 Changed 4 years ago by Aymeric Augustin

Resolution: wontfix
Status: newclosed

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.

Changed 4 years ago by Przemysław Suliga

Attachment: 19755.diff added

comment:9 Changed 4 years ago by Przemysław Suliga

Cc: suligap@… added
Has patch: set
Resolution: wontfix
Status: closednew

Patch makes all default FieldListFilters 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 Changed 4 years ago by Przemysław Suliga

Owner: changed from nobody to Przemysław Suliga
Status: newassigned

I would be happy to finish this patch if it gets any traction.

Note: See TracTickets for help on using tickets.
Back to Top