2014-10-28 47 views
4

我在我的項目中使用django-forms-builder,只有一件事我不能得到我的頭。我如何設置更新表單來編輯已填寫的表單?django-forms-builder。我如何更新表單?

這是我在做一個更新形式django-forms-builder

urls.py

url('forms/update/(?P<pk>\d+)/$', FormUpdateView.as_view(), 
           name='form-update'), 

views.py

class FormUpdateView(UpdateView): 
    model = FieldEntry 
    template_name = 'form/update_form.html' 
    form_class = FormForForm 
    success_url = '/assessments/all/' 

update-form.py嘗試

{% render_built_form id=form_instance.id %} 
+0

你需要找到一種方法,形式模型的實例傳遞到你的視圖'form_instance' – Anentropic 2014-10-28 19:02:28

+0

你可能是最好的子類或修改django-forms-builder自帶的'FormDetail'視圖https://github.com/stephenmcd/django-forms-builder/blob/master/forms_builder/forms/views.py – Anentropic 2014-10-28 19:05:55

回答

4

我還沒有使用這個軟件,但它可以填補我的兵工廠,所以我刺殺了它。我沒有使用CBV,因爲我仍然只是在四處尋找。這只是獲得部分,我可以在週末擴展如何處理後期部分(最好是用CBV來完成)。使用視圖功能實現職位相對簡單(if request.METHOD == "POST":#update the row)。渲染當然只是簡單的原始HTML,但forms_builder不提供任何樣式輸入。您可能想要將用戶添加到FormEntry中,但對於授權我還沒有一個好主意。我會給它一些想法並修改答案。

views.py

from forms_builder.forms.models import Form 

def get_form(request, slug, pk): 
    form_obj = Form.objects.get(slug=slug) 
    form_instance = form_obj.entries.get(pk=pk) 
    form = FormForForm(form=form_obj, instance=form_instance, context=request) 
    return render_to_response('update_form.html', {'form':form_instance.form, 'request':request}) 

模板/ update_form.html

{{ form.as_p }}