1
0
mirror of https://github.com/django/django.git synced 2025-07-19 09:09:13 +00:00

[1.9.x] Fixed #26387 -- Restored the functionality of the admin's raw_id_fields in list_editable.

Backport of acfaec3db5ba39de52f6e607e74343dccf72fba1 from master
This commit is contained in:
Tim Graham 2016-03-24 16:22:35 -04:00
parent 9d0c8d3dd9
commit 1f15d442bf
6 changed files with 39 additions and 8 deletions

View File

@ -176,6 +176,14 @@
} }
}); });
$('.related-widget-wrapper select').trigger('change'); $('.related-widget-wrapper select').trigger('change');
$('.related-lookup').click(function(e) {
e.preventDefault();
var event = $.Event('django:lookup-related');
$(this).trigger(event);
if (!event.isDefaultPrevented()) {
showRelatedObjectLookupPopup(this);
}
});
}); });
})(django.jQuery); })(django.jQuery);

View File

@ -79,14 +79,6 @@
showAddAnotherPopup(this); showAddAnotherPopup(this);
} }
}); });
$('.related-lookup').click(function(e) {
e.preventDefault();
var event = $.Event('django:lookup-related');
$(this).trigger(event);
if (!event.isDefaultPrevented()) {
showRelatedObjectLookupPopup(this);
}
});
{% if adminform and add %} {% if adminform and add %}
$('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus() $('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()

View File

@ -15,3 +15,6 @@ Bugfixes
* Fixed data loss on SQLite where ``DurationField`` values with fractional * Fixed data loss on SQLite where ``DurationField`` values with fractional
seconds could be saved as ``None`` (:ticket:`26324`). seconds could be saved as ``None`` (:ticket:`26324`).
* Restored the functionality of the admin's ``raw_id_fields`` in
``list_editable`` (:ticket:`26387`).

View File

@ -37,3 +37,6 @@ Bugfixes
* Fixed a regression in ``CommonMiddleware`` that caused spurious warnings in * Fixed a regression in ``CommonMiddleware`` that caused spurious warnings in
logs on requests missing a trailing slash (:ticket:`26293`). logs on requests missing a trailing slash (:ticket:`26293`).
* Restored the functionality of the admin's ``raw_id_fields`` in
``list_editable`` (:ticket:`26387`).

View File

@ -1008,5 +1008,13 @@ site.register(Group, GroupAdmin)
site2 = admin.AdminSite(name="namespaced_admin") site2 = admin.AdminSite(name="namespaced_admin")
site2.register(User, UserAdmin) site2.register(User, UserAdmin)
site2.register(Group, GroupAdmin) site2.register(Group, GroupAdmin)
site2.register(ParentWithUUIDPK)
site2.register(
RelatedWithUUIDPKModel,
list_display=['pk', 'parent'],
list_editable=['parent'],
raw_id_fields=['parent'],
)
site7 = admin.AdminSite(name="admin7") site7 = admin.AdminSite(name="admin7")
site7.register(Article, ArticleAdmin2) site7.register(Article, ArticleAdmin2)

View File

@ -4667,6 +4667,23 @@ class SeleniumAdminViewsFirefoxTests(AdminSeleniumWebDriverTestCase):
self.assertEqual(select.first_selected_option.text, uuid_id) self.assertEqual(select.first_selected_option.text, uuid_id)
self.assertEqual(select.first_selected_option.get_attribute('value'), uuid_id) self.assertEqual(select.first_selected_option.get_attribute('value'), uuid_id)
def test_list_editable_raw_id_fields(self):
parent = ParentWithUUIDPK.objects.create(title='test')
parent2 = ParentWithUUIDPK.objects.create(title='test2')
RelatedWithUUIDPKModel.objects.create(parent=parent)
self.admin_login(username='super', password='secret', login_url=reverse('admin:index'))
change_url = reverse('admin:admin_views_relatedwithuuidpkmodel_changelist', current_app=site2.name)
self.selenium.get(self.live_server_url + change_url)
self.selenium.find_element_by_id('lookup_id_form-0-parent').click()
self.wait_for_popup()
self.selenium.switch_to.window(self.selenium.window_handles[-1])
# Select "parent2" in the popup.
self.selenium.find_element_by_link_text(str(parent2.pk)).click()
self.selenium.switch_to.window(self.selenium.window_handles[0])
# The newly selected pk should appear in the raw id input.
value = self.selenium.find_element_by_id('id_form-0-parent').get_attribute('value')
self.assertEqual(value, str(parent2.pk))
class SeleniumAdminViewsChromeTests(SeleniumAdminViewsFirefoxTests): class SeleniumAdminViewsChromeTests(SeleniumAdminViewsFirefoxTests):
webdriver_class = 'selenium.webdriver.chrome.webdriver.WebDriver' webdriver_class = 'selenium.webdriver.chrome.webdriver.WebDriver'