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)
我在 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)