2012-10-13 100 views
0

我正在使用ModelForm並以u'first_name': [u'XX'], u'last_name': [u'']等形式傳遞存儲在數據庫中的數據,該數據使用保存原始發佈數據的MultiValueDict,但表單完全呈現爲實際領域包括[u'']包裝其餘。將MultiValueDict傳遞給Django ModelForm

如果我嘗試將相同的MultiValueDict傳遞給常規窗體,我不會遇到這個問題。

我不知道如何處理字典或處理數據,然後將其分配爲初始值。

編輯:從後得到的數據,並將其恢復到形式

if request_post_data is not None: 
    self.form = self.FORM_CLASS(data=request_post_data) 
    self.draft.raw_data = dict(request_post_data) # preserves multiple values per key 
    self.draft.save() 
else: 
# conversion to MultiValueDict restores multiple values per key 
self.form = self.FORM_CLASS(initial=MultiValueDict(self.draft.raw_data) if self.draft.raw_data else None)` 

request_post_data來自於一個數據庫中的序列化的字段和實際值

代碼如下所示:

<MultiValueDict: {u'last_name': [u''], u'suffix': [u''], u'prefix': [u''], u'first_name': [u'XX'], u'middle_name': [u'']}> 

最終顯示在我這樣的表格中(發送到ModelForm時):

Actual form

感謝您的幫助!

+0

請提供一些代碼示例。它使你更容易幫助你。 –

回答

0

爲了實例化一個形式的實例和所提供的POST查詢字典,你可以做你的看法如下:

project = get_object_or_404(Project.objects, pk=project_id) 
    projectForm = ProjectForm(request.POST, 
           instance=project) 

爲了提供您必須提供的初始值在一些初始值使用初始關鍵字參數的字典。

projectForm = ProjectForm(initial={'name': 'my first project'})