Django:保持数据以多种形式显示

时间:2014-10-24 21:21:08

标签: django django-forms django-views

我在模板中分别在三个标签中有三个表单。

我填写第一个标签,提交,填写第二个表格,提交,填写第三个表格,提交。

有没有办法在保存后保留每个表单中的数据?我需要一起展示它们。

不,当我保存第二张表格时,我会丢失第一张表格上的数据。

input.html :模板

<form class="tab-pane fade in active" id="demographics" method="post" >
    <input type="hidden" name="form_id" value="demographics">
    {%crispy frm%}
</form>
<form class="tab-pane fade" id="diagnosis" method="post">
     <input type="hidden" name="form_id" value="diagnosis">
    {%crispy frm_d%}
</form>
<form class="tab-pane fade" id="a_b_sickle" method="post">
     <input type="hidden" name="form_id" value="a_b_sickle">
    {%crispy frm_a_b_s%}
</form>

views.py

def input(request):

    context = RequestContext(request)

    if request.method == 'POST':
        submitted = request.POST.get('form_id', '')
        print submitted

        if submitted == 'demographics':
            # Get the Form1 instance
            my_demographics = DemographicForm(request.POST)
            #my_diagnosis = DiagnosisForm()

            if my_demographics.is_valid():
                my_demographics_object= my_demographics.save()
                my_diagnosis=DiagnosisForm({'patient': my_demographics_object.patient_id, 'diagnosis_option': 'b-thalassaemia syndromes'})
                my_a_b_sickle=A_b_sickle_thalForm({'patient': my_demographics_object.patient_id})
            else:
                my_diagnosis=DiagnosisForm()
                my_a_b_sickle = A_b_sickle_thalForm()


        elif submitted == 'diagnosis':
            my_diagnosis = DiagnosisForm(request.POST)
            my_demographics = DemographicForm()
            my_a_b_sickle = A_b_sickle_thalForm()
            if my_diagnosis.is_valid():
                my_diagnosis_object=my_diagnosis.save()
                my_a_b_sickle =A_b_sickle_thalForm({'patient': my_diagnosis_object.patient})

            else:
                my_demographics = DemographicForm()
                my_a_b_sickle = A_b_sickle_thalForm()

        elif submitted == 'a_b_sickle':
            my_a_b_sickle = A_b_sickle_thalForm(request.POST)
            my_demographics = DemographicForm()
            my_diagnosis = DiagnosisForm()

            if my_a_b_sickle.is_valid():
                my_a_b_sickle.save()

        else:
            raise ValueError('No form specified !')
    else:
        my_demographics = DemographicForm()
        my_diagnosis = DiagnosisForm()
        my_a_b_sickle= A_b_sickle_thalForm()

return render(request,'input.html', {'frm':my_demographics, 'frm_d': my_diagnosis, 'frm_a_b_s': my_a_b_sickle})

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用ajax提交它们,也可以在上下文中填写它们。如果您可以通过任何关联在请求之间获取保存的对象,您可以尝试:

对于第二种方式,你可以尝试这样的事情:

my_demographics = DemographicForm(my_demographic_object)
my_diagnosis = DiagnosisForm(my_diagnosis_object)
my_a_b_sickle= A_b_sickle_thalForm(my_a_b_sickle)

return render(request,'input.html', {'frm':my_demographics, 'frm_d': my_diagnosis, 'frm_a_b_s': my_a_b_sickle})

事实上,通过这种方式,您甚至可以使用&#39;实例&#39;作为更新表单。 ModelForm的属性。