Django

Code

Ticket #5247: multipatch.patch

File multipatch.patch, 2.4 kB (added by uhlr@us.ibm.com, 1 year ago)

svn diff for patch application

  • django/newforms/models.py

    old new  
    77from util import ValidationError 
    88from forms import BaseForm, DeclarativeFieldsMetaclass, SortedDictFromList 
    99from fields import Field, ChoiceField 
    10 from widgets import Select, SelectMultiple, MultipleHiddenInput 
     10from widgets import Select, SelectMultiple, MultipleHiddenInput, ModelSelectMultiple 
    1111 
    1212__all__ = ('save_instance', 'form_for_model', 'form_for_instance', 'form_for_fields', 
    1313           'ModelChoiceField', 'ModelMultipleChoiceField') 
     
    168168    "A MultipleChoiceField whose choices are a model QuerySet." 
    169169    hidden_widget = MultipleHiddenInput 
    170170    def __init__(self, queryset, cache_choices=False, required=True, 
    171             widget=SelectMultiple, label=None, initial=None, help_text=None): 
     171            widget=ModelSelectMultiple, label=None, initial=None, help_text=None): 
    172172        super(ModelMultipleChoiceField, self).__init__(queryset, None, cache_choices, 
    173173            required, widget, label, initial, help_text) 
    174174 
  • django/newforms/widgets.py

    old new  
    191191        if value is None: value = [] 
    192192        final_attrs = self.build_attrs(attrs, name=name) 
    193193        output = [u'<select multiple="multiple"%s>' % flatatt(final_attrs)] 
    194         str_values = set([smart_unicode(v) for v in value]) # Normalize to strings. 
     194        str_values = set([self.value_to_str(v) for v in value]) # Normalize to strings. 
    195195        for option_value, option_label in chain(self.choices, choices): 
    196196            option_value = smart_unicode(option_value) 
    197197            selected_html = (option_value in str_values) and ' selected="selected"' or '' 
     
    204204            return data.getlist(name) 
    205205        return data.get(name, None) 
    206206 
     207    def value_to_str(cls, value): 
     208        return smart_unicode(value) 
     209 
     210def ModelSelectMultiple(forms.SelectMultiple): 
     211    def value_to_str(cls, value): 
     212        return super(ModelSelectMultiple, cls).value_to_str(value._get_pk_val()) 
     213 
    207214class RadioInput(StrAndUnicode): 
    208215    "An object used by RadioFieldRenderer that represents a single <input type='radio'>." 
    209216    def __init__(self, name, value, attrs, choice, index):