首页 > 解决方案 > 为什么没有出现 Django 表单集?

问题描述

我在同一页面上有一个表单和一个表单集。在我从 django admin 删除信息之前,我可以看到表单和表单集。在我删除了一些“患者”信息并更新了我的 css 文件后,表单集停止显示。

视图.py

def patient_new(request):
    patientForm = PatientForm()
    formset = LocationFormSet()
    if request.method == "POST":
        patientForm = PatientForm(request.POST)
        formset = LocationFormSet(request.POST) 
        if patientForm.is_valid() and formset.is_valid():
            patient = patientForm.save(commit=True)
            for form in formset:
                location = form.save(commit=False)
                location.patient = patient
                location.save()
            return index(request)
        else:
            print('ERROR FORM INVALID')

    return render(request, 'covidapp/patient_new.html',{'patientForm':patientForm, 'formset':formset}) 

.html 文件

<form class="form-horizontal" method="POST">
    {% csrf_token %}
    <div class="jumbotron">
        <div class="row spacer">
            <div class="col-2">
                <div class="input-group">
                    {{ patientForm.as_p }}       
                </div>
            </div> 
        </div> 
    {{ formset.management_form }}
    {% for form in formset %}
    <div class="row form-row spacer">
        <div class="col-6">
            <div class="input-group">
                {{ form.as_p }}
                <div class="input-group-append">
                    <button type="button" class="btn btn-success add-form-row">+</button>
                </div>
            </div>
        </div>
    </div>
    {% endfor %}

    <div class="row spacer">
        <div class="col-4 offset-2"></div>
            <button type="submit" class="btn btn-block btn-primary">Create</button>
        </div>
    </div>
</form>

html输出

在此处输入图像描述

我不确定隐藏的输入是否应该是我的表单集以及它为什么被隐藏。

模型.py

class Patient(models.Model):
    name = models.CharField(max_length=200)
    idn = models.IntegerField(unique=True)
    date_of_birth = models.DateField()
    date_of_confirm = models.DateField()
    case_number = models.IntegerField()

    def get_absolute_url(self):
        return reverse("patient_detail", kwargs={'pk':self.pk})

    def __str__(self):
        return self.name

class Location(models.Model):
    patient = models.ForeignKey(Patient, related_name='locations', on_delete=models.CASCADE)
    location_name = models.CharField(max_length=50, null=True)
    address = models.CharField(max_length=300, null=True)
    grid_x = models.IntegerField(null=True)
    grid_y = models.IntegerField(null=True)
    date_from = models.DateField(null=True)
    date_to = models.DateField(null=True)
    details = models.CharField(max_length=300, null=True)
    category = models.CharField(max_length=300, null=True)

    def __str__(self):
        return self.location_name

表格.py

class PatientForm(forms.ModelForm):
    class Meta:
        model = Patient
        fields = '__all__'

LocationFormSet = modelformset_factory(
    Location,
    extra=0,
    exclude = ('patient',)
)

标签: htmldjango

解决方案


推荐阅读