diff --git a/django/contrib/admin/static/admin/js/SelectFilter2.js b/django/contrib/admin/static/admin/js/SelectFilter2.js
index 2eb67e8..02c871b 100644
--- a/django/contrib/admin/static/admin/js/SelectFilter2.js
+++ b/django/contrib/admin/static/admin/js/SelectFilter2.js
@@ -21,7 +21,12 @@ window.SelectFilter = {
             return;
         }
         var from_box = document.getElementById(field_id);
-        from_box.id += '_from'; // change its ID
+
+        // Create a clone to keep the actual values to be sent with the form
+        var actual_box = $(from_box).clone().insertBefore(from_box).hide();
+
+        from_box.id += '_from';
+        from_box.name += '_from';
         from_box.className = 'filtered';
 
         var ps = from_box.parentNode.getElementsByTagName('p');
@@ -60,15 +65,15 @@ window.SelectFilter = {
         filter_input.id = field_id + '_input';
 
         selector_available.appendChild(from_box);
-        var choose_all = quickElement('a', selector_available, gettext('Add all'), 'href', 'javascript: (function(){ SelectBox.move_all("' + field_id + '_from", "' + field_id + '_to"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_add_all_link');
+        var choose_all = quickElement('a', selector_available, gettext('Add all'), 'href', 'javascript: (function(){ SelectBox.move_all("' + field_id + '_from", "' + field_id + '_to"); SelectFilter.refresh_state("' + field_id + '");})()', 'id', field_id + '_add_all_link');
         choose_all.className = 'selector-chooseall';
 
         // <ul class="selector-chooser">
         var selector_chooser = quickElement('ul', selector_div, '');
         selector_chooser.className = 'selector-chooser';
-        var add_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Add'), 'title', gettext('Add'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_from","' + field_id + '_to"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_add_link');
+        var add_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Add'), 'title', gettext('Add'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_from","' + field_id + '_to"); SelectFilter.refresh_state("' + field_id + '");})()', 'id', field_id + '_add_link');
         add_link.className = 'selector-add';
-        var remove_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Remove'), 'title', gettext('Remove'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_to","' + field_id + '_from"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_remove_link');
+        var remove_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Remove'), 'title', gettext('Remove'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_to","' + field_id + '_from"); SelectFilter.refresh_state("' + field_id + '");})()', 'id', field_id + '_remove_link');
         remove_link.className = 'selector-remove';
 
         // <div class="selector-chosen">
@@ -77,21 +82,18 @@ window.SelectFilter = {
         var title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Added %s') + ' ', [field_name]));
         quickElement('img', title_chosen, '', 'src', admin_media_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of added %s. You may remove some by selecting them below and then clicking the "Remove" button.'), [field_name]));
 
-        var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name'));
+        var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', actual_box.attr('name') + '_to');
         to_box.className = 'filtered';
-        var clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'href', 'javascript: (function() { SelectBox.move_all("' + field_id + '_to", "' + field_id + '_from"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_remove_all_link');
+        var clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'href', 'javascript: (function() { SelectBox.move_all("' + field_id + '_to", "' + field_id + '_from"); SelectFilter.refresh_state("' + field_id + '");})()', 'id', field_id + '_remove_all_link');
         clear_all.className = 'selector-clearall';
 
-        from_box.setAttribute('name', from_box.getAttribute('name') + '_old');
-
         // Set up the JavaScript event handlers for the select box filter interface
         addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); });
         addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); });
-        addEvent(from_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });
-        addEvent(to_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });
-        addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); });
-        addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); });
-        addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); });
+        addEvent(from_box, 'change', function(e) { SelectFilter.refresh_icons(field_id); });
+        addEvent(to_box, 'change', function(e) { SelectFilter.refresh_icons(field_id); });
+        addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_state(field_id); });
+        addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_state(field_id); });
         SelectBox.init(field_id + '_from');
         SelectBox.init(field_id + '_to');
         // Move selected from_box options to to_box
@@ -102,8 +104,8 @@ window.SelectFilter = {
             $(to_box).height($(filter_p).outerHeight() + $(from_box).outerHeight());
         }
 
-        // Initial icon refresh
-        SelectFilter.refresh_icons(field_id);
+        // Initial state refresh
+        SelectFilter.refresh_state(field_id);
     },
     refresh_icons: function(field_id) {
         var from = $('#' + field_id + '_from');
@@ -117,6 +119,30 @@ window.SelectFilter = {
         $('#' + field_id + '_add_all_link').toggleClass('active', from.find('option').length > 0);
         $('#' + field_id + '_remove_all_link').toggleClass('active', to.find('option').length > 0);
     },
+    refresh_state: function(field_id) {
+        SelectFilter.refresh_icons(field_id);
+
+        // Re-generate the content of the actual, hidden, box.
+        var actual_box = document.getElementById(field_id);
+
+        // Clear all options.
+        actual_box.options.length = 0;
+
+        var node, i;
+        var cache_to = SelectBox.cache[field_id + '_to'];
+        var cache_from = SelectBox.cache[field_id + '_from'];
+
+        // Add all options from the 'to' box and select them.
+        for (i = 0; i < cache_to.length; i++) {
+            node = cache_to[i];
+            actual_box.options[actual_box.options.length] = new Option(node.text, node.value, false, true);
+        }
+        // Add all options from the 'from' box and keep them unselected.
+        for (i = 0; i < cache_from.length; i++) {
+            node = cache_from[i];
+            actual_box.options[actual_box.options.length] = new Option(node.text, node.value, false, false);
+        }
+    },
     filter_key_up: function(event, field_id) {
         var from = document.getElementById(field_id + '_from');
         // don't submit form if user pressed Enter
