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.