2017-08-14 56 views
0

我已經嘗試了各種選項,但至今沒有運氣。我試圖將實例數據預填充到我的ModelField中。以下是我有:使用對象數據預填充模型表單 - Django

forms.py

class edit_project_info(ModelForm): 
    project_name = forms.CharField(max_length=150) 


class Meta: 
    model = Project 
    exclude = ['project_type', 'created_date', 'start_date', 'end_date', 'pm_scope', 'dev_scope', 'design_scope', 'testing_scope' ] 

View.py

def edit_project (request, offset): 
    this_project = Project.objects.get(pk=offset) 
    data = {'project_name' : 'abc'} 
    if request.method == 'POST': 
     form = edit_project_info(request.POST, instance=this_project, initial=data) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/project_profile/%s/' % offset) 
    else: 
     form = edit_project_info() 

我得到的是一個空場。我可以將這個初始值添加到forms.py中,但它是靜態的,而不是基於表單實例填充的。我在這裏所做的創建一個字典,然後將它傳遞給表單實例中的初始值,似乎沒有做任何事情。我確定我缺少一些基本的東西。任何幫助將是偉大的!提前致謝。

回答

0

最後兩行重新創建您的form變量。只是刪除else: form = edit_project_info()

def edit_project (request, offset): 
    this_project = Project.objects.get(pk=offset) 
    data = {'project_name' : 'abc'} 
    form = edit_project_info(request.POST, instance=this_project, initial=data) 
    if request.method == 'POST': 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/project_profile/%s/' % offset) 
    # else: 
    #  form = edit_project_info() 
    # ... 
+0

這給了我一個錯誤「局部變量‘形式’分配前引用了」,但根據你的建議,我改變了最後一行「的形式= edit_project_info(初始=數據)」和它的作品作爲現在預計。仍然需要做一些研究來理解爲什麼。謝謝您的幫助。 – jonin

+0

哦,對不起,我不明白縮進。我更新了答案 - 'form'應該在'if request.method =='POST'之前:'。 –

+0

謝謝安東!這按預期工作。 – jonin

相關問題