2017-07-19 92 views
0

我在模板中有兩種形式。目前我有兩個提交按鈕。 想將這些組合到一個提交按鈕。在Django中提交兩個表單提交

下面的代碼現在只更新一個表單,即AnswerForm。 我可以如何更新AnswerReplyForm?

類AnswerView(ObjectEditView):

form_class = forms.AnswerReplyForm 
answer_form = forms.AnswerForm 

model = AnswerReply 


def get(self, request, pk): 

    answer = get_object_or_404(Answer, pk = pk) 
    answer_reply = AnswerReply.objects.filter(answer_id = pk).order_by('-id') 
    self.answer_form = self.answer_form(instance=answer) 
    return render(request, 'helpdesk/answer.html', { 
     'answer': answer, 
     "answer_reply" : answer_reply, 
     'obj_type': 'answer reply', 
     'form': self.form_class, 
     "form2":self.answer_form, 
     "pre_reply_from" : self.predefined_reply_form 
    }) 

def post(self, request, pk, *args, **kwargs): 
    answer = get_object_or_404(Answer, id=pk) 
    answer_reply = AnswerReply.objects.filter(answer_id = pk).order_by('-id') 
    self.answer_form = self.answer_form(instance=answer) 

    obj = self.model() 
    obj = self.alter_obj(obj, request, args, kwargs) 

    form = self.form_class(request.POST, request.FILES, instance=obj) 

    if form.is_valid(): 
     form.instance.answer_id = pk 
     obj_created = not form.instance.pk 
     obj = form.save() 


    return render(request, 'helpdesk/answer.html', { 
     'answer': answer, 
     "answer_reply" : answer_reply, 
     'obj_type': 'answer reply', 
     'form': self.form_class, 
     "form2":self.answer_form, 
    }) 
+0

可能重複[Django的提交兩種不同的形式與一個提交按鈕(HTTPS://stackoverflow.c OM /問題/ 18489393/Django的提出,二,不同的表單與 - 一個提交按鈕) –

回答

1

一般:

if request.method == 'POST': 
    form_1 = FormOne(request.POST) 
    form_2 = FormTwo(request.POST) 

    if form_1.is_valid() and form_2.is_valid(): 
     form_1.save() 
     form_2.save() 
     return #Write your return here, something like HttpResposeRedirect or whatever you need to do after saving both form successfully 

else: 
    form_1 = FormOne() 
    form_2 = FormTwo() 

context = { 
    'form1': form_1, 
    'form2': form_2 
} 

return render(request, 'template.html', context) 

在模板文件

<form> 
{{ form1 }} 
{{ form2 }} 
<input type="submit" value= "submit"> 
</form> 

它將工作。

0

這是更好地限定用於每一個(查看,路線和模板)

然後,基於期望的條件,顯示的結構中的一個(重定向到其中之一)的結構:

例如決策觀點:

def decisionView(request): 
    route = '/route/1' 
    if condition: 
     route = '/route/2' 
    return redirect(route) 

我希望這可以幫助你