id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 620,[patch] make limit_choices_to work with raw_id_admin,davidschein@…,Adrian Holovaty,"With raw_id_admin=True, the admin UI does not limit choices as per limit_choices_to. The following patch fixes it. {{{ Index: django/conf/admin_media/js/admin/RelatedObjectLookups.js =================================================================== --- django/conf/admin_media/js/admin/RelatedObjectLookups.js (revision 851) +++ django/conf/admin_media/js/admin/RelatedObjectLookups.js (working copy) @@ -3,7 +3,13 @@ function showRelatedObjectLookupPopup(triggeringLink) { var name = triggeringLink.id.replace(/^lookup_/, ''); - var win = PrivoxyWindowOpen(triggeringLink.href + '?pop=1', name, 'height=500,width=740,resizable=yes,scrollbars=yes'); + var href + if (triggeringLink.href.search(/\?/) >= 0) { + href = triggeringLink.href + '&pop=1'; + } else { + href = triggeringLink.href + '?pop=1' + } + var win = PrivoxyWindowOpen(href, name, 'height=500,width=740,resizable=yes,scrollbars=yes'); win.focus(); return false; } Index: django/views/admin/main.py =================================================================== --- django/views/admin/main.py (revision 851) +++ django/views/admin/main.py (working copy) @@ -746,8 +746,12 @@ field_id = 'id_%s%s' % ((rel and ""%s{{ forloop.counter0 }}."" % name_prefix or """"), field.get_manipulator_field_names('')[0]) # raw_id_admin fields get the little lookup link next to them if use_raw_id_admin(field): - t.append(' ' % \ - (field.rel.to.app_label, field.rel.to.module_name, field_id)) + if field.rel.limit_choices_to: + limit_choices_to = '?%s' % '&'.join(['%s=%s' % (k,v) for k,v in field.rel.limit_choices_to.items()]) + else: + limit_choices_to = '' + t.append(' ' % \ + (field.rel.to.app_label, field.rel.to.module_name, limit_choices_to, field_id)) t.append('' % ADMIN_MEDIA_PREFIX) # fields with relationships to editable objects get an ""add another"" link, # but only if the field doesn't have raw_admin ('cause in that case they get }}}",defect,closed,contrib.admin,,normal,fixed,,,Unreviewed,1,0,0,0,0,0