class CheckboxSelectWithTextInputWidget(forms.MultiWidget):

    def __init__(self,choices, attrs=None):

        widgets = (
            forms.CheckboxSelectMultiple(choices = choices),
            forms.TextInput(),
        )
        super(CheckboxSelectWithTextInputWidget,self).__init__
(widgets,attrs)

    def decompress(self,value):
        print "widget value in decompress for checkbox-with-textinput:
%s" % str(value)
        if value:
            return value.split(',')
        return [None,None]

    def format_output(self, rendered_widgets):

        rendered_widgets[0] = u"выберите: " + rendered_widgets[0]
        rendered_widgets[1] = u"и (или) впишите свои значения через
запятую: " + rendered_widgets[1]

        return u''.join(rendered_widgets)

class CheckboxSelectWithTextInput(forms.MultiValueField):

    widget = CheckboxSelectWithTextInputWidget


    def __init__(self, choices, *args, **kwargs):
        print 'CheckboxSelectWithTextInput initialised'
        self.choices = choices


        widgets = CheckboxSelectWithTextInputWidget(choices)
        fields=(forms.MultipleChoiceField(choices = self.choices,
label = u"выберите", required = False), forms.CharField(label =
u"впишите свои значения", required = False))
        super(CheckboxSelectWithTextInput, self).__init__(fields,
widget=widgets, *args, **kwargs)

    def compress(self, data_list):
        print "data list for from-to-range: %s" % data_list
        try:
            result = data_list[0]       #добавим в вывод значения из
чекбоксов



            #заберем из поля ввода и разделим запятыми введенные
дополнительные варианты:
            additional_result = data_list[1].split(",")

            #порежем лишние пробелы и пустые значения и добавим к
результирующему массиву элементы из текстового поля:
            for word in additional_result:
                if word.strip():
                    result.append(word.strip())

        except IndexError:
            result = u""



        return result

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to