Opened 2 years ago

Last modified 2 years ago

#19755 assigned New feature

Incremental filter

Reported by: paulox@… Owned by: suligap
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 suligap 2 years ago.

Download all attachments as: .zip

Change History (11)

comment:1 Changed 2 years ago by slurms

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Design 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 2 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 2 years ago by aaugustin

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 2 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 2 years ago by aaugustin

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 2 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 2 years ago by aaugustin

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

Last edited 2 years ago by aaugustin (previous) (diff)

comment:8 Changed 2 years ago by aaugustin

  • Resolution set to wontfix
  • Status changed from new to 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.

Changed 2 years ago by suligap

comment:9 Changed 2 years ago by suligap

  • Cc suligap@… added
  • Has patch set
  • Resolution wontfix deleted
  • Status changed from closed to new

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 2 years ago by suligap

  • Owner changed from nobody to suligap
  • Status changed from new to assigned

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

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