Django 不呈现我的表单字段

Django does not render my forms' fields

我在 models.py 中有这个模型:

class Life_events(models.Model):
patient = models.ForeignKey(Demographic)
HSCT_date = models.DateField('HSCT date',null=True,blank=True)
HSCT_outcome = models.CharField('HSCT outcome',max_length=100, null=True, blank=True)
partaker_in_clinical_trial= models.CharField('Partaker in clinical trial',max_length=200, null=True, blank=True)
date_of_input= models.DateField(null=True,blank=True)

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

我的 forms.py 包含:

class LifeEventsForm(forms.Form):
def __init__(self, *args, **kwargs):
    super(LifeEventsForm, self).__init__(*args, **kwargs)
    self.helper=FormHelper(self)
    self.helper.field_class = 'col-md-8'
    self.helper.label_class = 'col-md-3'
    self.helper.layout = Layout(
         Fieldset (
            '<b>HSCT</b>',
            Div(
                #HTML(u'<div class="col-md-2"></div>'),
                Div('HSCT_date',css_class='col-md-6'),
                Div('HSCT_outcome',css_class="col-md-6"),
                Div('partaker_in_clinical_trial', css_class='col-md-6'),
                css_class='row',
                ),
         ),

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

class Meta:
    model = Life_events
    exclude = ['patient', 'date_of_input']

我的 views.py 有:

my_life_ev = LifeEventsForm(prefix='life_ev')
 return render_to_response('input.html', {'frm_life_ev': my_life_ev,}, context)

我的模板文件 input.html 有:

  {%crispy frm_life_ev%}

当我呈现我的模板时,我看不到表单域,只能看到我在 Fieldset 中的 'HSCT' 字样。我的 html 代码根本不包含字段。

有什么想法吗?

您的表单继承自 forms.Form,它对模型一无所知并忽略元 class。你应该继承自 forms.ModelForm.

您需要声明一个 ModelForm。一个简单的表格是行不通的。

class LifeEventsForm(forms.ModelForm)