Django MultiValueField - Wie übergebe ich eine Auswahl an ChoiceField?

Ich habe ein Mehrfeld mit einem Charfield und einem Choicefield. Ich muss eine Auswahl an den choicefield-Konstruktor übergeben. Wenn ich jedoch versuche, sie an mein benutzerdefiniertes Multivaluefield zu übergeben, wird eine Fehlermeldung angezeigt__init__() Ich habe ein unerwartetes Keyword-Argument "options" erhalten.

Ich weiß, dass der Rest des Codes funktioniert, weil, wenn ich das Schlüsselwort Argument Auswahl von entferne__init__ und super, das multivalente feld wird korrekt aber ohne auswahl angezeigt.

So richte ich mein benutzerdefiniertes Mehrfachfeld ein:

class InputAndChoice(object):
    def __init__(self, text_val='', choice_val=''):
        self.text_val=text_val
        self.choice_val=choice_val

class InputAndChoiceWidget(widgets.MultiWidget):
    def __init__(self, attrs=None):
        widget = (widgets.TextInput(),
                  widgets.Select()
                 )
        super(InputAndChoiceWidget, self).__init__(widget, attrs=attrs)

    def decompress(self,value):
        if value:
            return [value.text_val, value.choice_val]
        return [None, None]


class InputAndChoiceField(forms.MultiValueField):
    widget = InputAndChoiceWidget

    def __init__(self, required=True, widget=None, label=None, initial=None,
                 help_text=None, choices=None):
        field = (
                 fields.CharField(),
                 fields.ChoiceField(choices=choices),
                 )
        super(InputAndChoiceField, self).__init__(fields=field, widget=widget, 
              label=label, initial=initial, help_text=help_text, choices=choices)

Und ich nenne es so:

input_and_choice = InputAndChoiceField(choices=[(1,'first'),(2,'second')])

Wie gebe ich die Auswahl an mein ChoiceField-Feld weiter?

Bearbeiten:

Ich habe den Vorschlag von stefanw ausprobiert, aber immer noch kein Glück. Ich habe logging.debug verwendet, um den Inhalt von InputAndChoiceField am Ende von init und self.fields [1] auszudrucken. Choices enthält die korrekten Werte wie oben, zeigt jedoch keine Auswahlmöglichkeiten im Browser an.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage