我有一個charfield和choicefield的多值域。我需要將選擇傳遞給choicefield構造函數,但是當我嘗試將其傳遞到我的自定義多值字段時,出現錯誤__init__()
得到了一個意外的關鍵字參數'choices'。Django MultiValueField - 如何將選項傳遞給ChoiceField?
我知道其餘代碼的作品,因爲當我從__init__
和超級刪除選項關鍵字參數時,多值字段顯示正確,但沒有任何選擇。
這是怎麼設置我的自定義multivaluefield:
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)
我叫它像這樣:
input_and_choice = InputAndChoiceField(choices=[(1,'first'),(2,'second')])
那麼,如何通過選擇,我ChoiceField場?
編輯:
我已經試過stefanw的建議,但仍然沒有運氣。我已經使用logging.debug在init和self.fields [1]的末尾打印出InputAndChoiceField的內容。[1] .choices包含上述正確的值,但它不會在瀏覽器中顯示任何選項。
我剛試過這個,但我仍然得到一個空的選擇字段。我檢查了,但選擇正確通過。有什麼想法嗎? – 2009-10-24 09:45:20
它看起來應該在調用MultiValueField構造函數之前構造一個'fields'對象,然後將該'fields'值傳遞給超類構造函數的第一個參數。 – mjumbewu 2011-04-06 21:00:38