Django:窗体外键自动协调

2024-09-28 20:17:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须建立模型(人口统计学+诊断),我为这些模型创建了两个相应的表单。你知道吗

型号.py

class demographic(models.Model):
    national_health_care_pat_id = models.IntegerField('National Health Care patient id', null=True,blank=True)
    patient_hospital_file_number = models.IntegerField(null=True,blank=True)
    patient_id = models.IntegerField(unique= True ,primary_key=True)

    def __str__(self):
        return str(self.patient_id)

class diagnosis(models.Model):
    patient = models.ForeignKey(demographic)
    age_of_diagnosis = models.IntegerField(null=True,blank=True)

    def __str__(self):
        return str(self.patient_id)

视图.py

def input(request):

form = DemographicForm(request.POST or None)
form_diag = DiagnosisForm(request.POST or None)


context = RequestContext(request)

if form.is_valid():
    save_it = form.save(commit=False)
    save_it.save()
    return render_to_response('test.html')

if form_diag.is_valid():
    save_itd = form_diag.save(commit=False)
    save_itd.save()
    return render_to_response('test.html')

return render_to_response('input.html', {'frm':form, 'frm_d': form_diag}, context)

在我的模板中输入.html我有

<form class="tab-pane fade in active" id="demographics" method="post" >
    {%crispy frm%}
</form>
<form class="tab-pane fade" id="diagnosis" method="post">
    {%crispy frm_d%}
</form>

表单.py

class DemographicForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(DemographicForm, self).__init__(*args, **kwargs)
        self.helper=FormHelper(self)
        self.fields['date_of_birth'].widget = widgets.AdminDateWidget()
        self.helper.layout = Layout(
            'national_health_care_pat_id',
            'patient_hospital_file_number',
            'patient_id',

            FormActions(
                Submit('submit', "Save changes"),
                Submit('cancel', "Cancel")
            ),

        )
        self.helper.form_tag = False
        self.helper.form_show_labels = True

    class Meta:
        model = demographic
        exclude = []

class DiagnosisForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(DiagnosisForm, self).__init__(*args, **kwargs)
        self.helper=FormHelper(self)
        self.helper.layout = Layout(
            'patient',
            'age_of_diagnosis',

            FormActions(
                Submit('submit', "Save changes"),
               Submit('cancel',"Cancel")
            ),
        )
        self.helper.form_tag = False
        self.helper.form_show_labels = True

    class Meta:
        model = diagnosis
        exclude = []

有没有一种方法可以把人口统计。患者id与诊断.病人在表格上?我的意思是我填写并保存人口统计表,然后我填写诊断表,我希望我的表有人口统计。患者id价值诊断.病人没有选择它。你知道吗


Tags: selfformhelperidtruereturnmodelsrequest
1条回答
网友
1楼 · 发布于 2024-09-28 20:17:54

如果需要初始值,可以尝试this

form = MyForm(initial={'max_number': '3'})

您需要将3替换为您的患者id,您需要知道如何将其传递给视图。如果您正在尝试以下操作,则很容易:

my_demographic_object = my_demographic_form.save() #Object created from your old form
form = MyForm(initial={'patient': my_demographic_object.id})

如果这不是你想做的,请详细解释一下

相关问题 更多 >