2015-05-08 67 views
1

我想設置與數據request.GET中一些初始形式的數據,當它被初始化:Django的形式初始數據被設置爲列表

GET數據:

http://localhost:8000/form_builder/SoW/create/?project=1&value=100 

形式:

class SoWForm(forms.ModelForm): 
    class Meta: 
     model = SoW 
     fields = (
      'project', 
      'ref', 
      'date_signed', 
      'sow_file', 
      'value', 
      'status' 
     ) 

    def __init__(self, *args, **kwargs): 
     super(SoWForm, self).__init__(*args, **kwargs) 
     self.helper = FormHelper(self) 

初始化的形式爲:

form = SoWForm(initial=request.GET) 

什麼情況是,那些被集中的所有表單字段被填充的列表:

form initial fields are populated as lists

,它打破了課程的形式:

broken form data

有沒有一種辦法避免這一點?在嘗試提取數據和內容的過程中,它是否在(dict.GET)字典中指示?

dict(request.GET.iteritems())會將request.GET轉換爲初始數據的'正確'字典,但不是默認行爲錯誤?

回答

0

問題不在於形式,而在於用什麼來填充它。 QueryDicts是一個特殊的字典子類旨在支持多個值的可能性,在查詢字符串或POST數據,例如:

>>> QueryDict('a=1&b=2&b=3') 
<QueryDict: {u'a': [u'1'], u'b': [u'2', u'3']}> 

,正如你已經發現,這並不適合用作形式初始數據。

您已經找到解決方法;我建議你繼續這樣做。