Of course, it prevents the users from filling the field, the only
solutions being: to type the ID, or to open the change view, which may be
disabled if you want users to only use the changelist…
Bug experienced on all Django 1.9 versions, and probably master.
--
Ticket URL: <https://code.djangoproject.com/ticket/26387>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* needs_tests: => 0
* severity: Normal => Release blocker
* version: 1.9 => 1.8
* needs_docs: => 0
* stage: Unreviewed => Accepted
Old description:
> Suppose you have this admin class, where 'fk' is a ForeignKey field name:
> {{{#!python
> @register(YourModel)
> class YourModelAdmin(ModelAdmin):
> list_display = ['fk']
> list_editable = ['fk']
> raw_id_fields = ['fk']
> }}}
> When you open the changelist, everything is displayed normally, fk
> consists in a field and a magnifying glass. But no javascript 'click'
> event is bound to the glass, so the changelist of the related model opens
> directly in the main window, not in popup.
>
> Of course, it prevents the users from filling the field, the only
> solutions being: to type the ID, or to open the change view, which may be
> disabled if you want users to only use the changelist…
>
> Bug experienced on all Django 1.9 versions, and probably master.
New description:
Suppose you have this admin class, where 'fk' is a ForeignKey field name:
{{{#!python
@register(YourModel)
class YourModelAdmin(ModelAdmin):
list_display = ['pk', 'fk']
list_editable = ['fk']
raw_id_fields = ['fk']
}}}
When you open the changelist, everything is displayed normally, fk
consists in a field and a magnifying glass. But no javascript 'click'
event is bound to the glass, so the changelist of the related model opens
directly in the main window, not in popup.
Of course, it prevents the users from filling the field, the only
solutions being: to type the ID, or to open the change view, which may be
disabled if you want users to only use the changelist…
Bug experienced on all Django 1.9 versions, and probably master.
--
Comment:
I found it necessary to include another field in `list_display` to
reproduce this. Otherwise on master, you'll get an error like `"The value
of 'list_editable[0]' refers to the first field in 'list_display'
('question'), which cannot be used unless 'list_display_links' is set."` I
edited the ticket description to include this.
Seems to be a regression in Django 1.8 the popup works on 1.7.
--
Ticket URL: <https://code.djangoproject.com/ticket/26387#comment:1>
Comment (by BertrandBordage):
The solution would be to partially include `admin/js/change_form.js` to
the changelist view.
I made a workaround for Django 1.9 (and probably all other versions).
Create a static file `admin/js/change_list.js` containing this:
{{{#!javascript
// FIXME: Remove this file, it’s a workaround to
https://code.djangoproject.com/ticket/26387
(function($) {
'use strict';
$(document).ready(function() {
$('.related-lookup').click(function(e) {
e.preventDefault();
var event = $.Event('django:lookup-related');
$(this).trigger(event);
if (!event.isDefaultPrevented()) {
showRelatedObjectLookupPopup(this);
}
});
});
})(django.jQuery);
}}}
Then add a `media` property to your admin class:
{{{#!python
from django.forms import Media
class YourModelAdmin(ModelAdmin):
[…]
# FIXME: Remove this workaround to
https://code.djangoproject.com/ticket/26387
@property
def media(self):
return super(YourModelAdmin,
self).media + Media(js=['admin/js/change_list.js'])
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/26387#comment:2>
* owner: nobody => timgraham
* status: new => assigned
--
Ticket URL: <https://code.djangoproject.com/ticket/26387#comment:3>
* has_patch: 0 => 1
Comment:
[https://github.com/django/django/pull/6332 PR]
--
Ticket URL: <https://code.djangoproject.com/ticket/26387#comment:4>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"acfaec3db5ba39de52f6e607e74343dccf72fba1" acfaec3d]:
{{{
#!CommitTicketReference repository=""
revision="acfaec3db5ba39de52f6e607e74343dccf72fba1"
Fixed #26387 -- Restored the functionality of the admin's raw_id_fields in
list_editable.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/26387#comment:5>
Comment (by Tim Graham <timograham@…>):
In [changeset:"1f15d442bf59218fb62fd95cc065da1d9a14b577" 1f15d44]:
{{{
#!CommitTicketReference repository=""
revision="1f15d442bf59218fb62fd95cc065da1d9a14b577"
[1.9.x] Fixed #26387 -- Restored the functionality of the admin's
raw_id_fields in list_editable.
Backport of acfaec3db5ba39de52f6e607e74343dccf72fba1 from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/26387#comment:6>
Comment (by Tim Graham <timograham@…>):
In [changeset:"0496838e61ad85fd8f8bb081f20577342aa1f151" 0496838e]:
{{{
#!CommitTicketReference repository=""
revision="0496838e61ad85fd8f8bb081f20577342aa1f151"
[1.8.x] Fixed #26387 -- Restored the functionality of the admin's
raw_id_fields in list_editable.
Backport of acfaec3db5ba39de52f6e607e74343dccf72fba1 from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/26387#comment:7>
Comment (by BertrandBordage):
Thank you very much for your work, Tim ! :)
--
Ticket URL: <https://code.djangoproject.com/ticket/26387#comment:8>