#27559: Admin changelist turns QueryDict into dict
-----------------------------------------+------------------------
               Reporter:  Jonas          |          Owner:  nobody
                   Type:  Uncategorized  |         Status:  new
              Component:  contrib.admin  |        Version:  master
               Severity:  Normal         |       Keywords:
           Triage Stage:  Unreviewed     |      Has patch:  0
    Needs documentation:  0              |    Needs tests:  0
Patch needs improvement:  0              |  Easy pickings:  0
                  UI/UX:  0              |
-----------------------------------------+------------------------
 We implemented a custom SimpleListFilter for the admin which presents the
 choices as a list of checkboxes. Pressing "submit" sends the list to the
 backend for filtering.

 Unfortunately, this doesn't really work well and it took us a while to
 find out why: the `ChangeList` view turns `request.GET` (a `QueryDict`)
 
[https://github.com/django/django/blob/master/django/contrib/admin/views/main.py#L67
 into a dict].

 This means, a query string in the form of `?q=123&state=1&state=2` simply
 loses all state values except the last one. It still works in principle
 but as soon as you e.g. click on a column heading to re-sort, the link
 only shows the last value instead of all of them.

 I checked the git log and traced this re-casting back to the
 
"[https://github.com/django/django/commit/9dda4abee1225db7a7b195b84c915fdd141a7260
 #diff-ea7d8c684e252f3dad6aa458df7d3070R109 NEW ADMIN MERGE]" in 2005. It
 was probably done to be able to manipulate the parameters but seems to be
 a very lossy operation for this purpose.

 Shouldn't `self.params` rather be kept as a `QueryDict`? We'll get started
 on a pull request if there's interest.

 ([https://groups.google.com/forum/#!topic/django-developers/dxEAq8_DSeM
 Asked on django-developers])

--
Ticket URL: <https://code.djangoproject.com/ticket/27559>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/048.5ca7faa23a8c1f45feb78687d81157e6%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to