我有以下表格:
class RehabilitationSessionForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
# user = kwargs.pop('user', None)
super(RehabilitationSessionForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_method = 'post'
self.helper.add_input(Submit('submit', u'Guardar'))
class Meta:
model = RehabilitationSession
widgets = {
'pain_extremity':forms.RadioSelect,
'upper_extremity':forms.RadioSelect,
}
fields = ['patient', 'medical', 'therapist', 'date_session_begin',
'upper_extremity', 'pain_extremity','movement_up','movement_down',
'movement_left','movement_right',
'games','game_levels','iterations','game_observations','patient_behavior',
'observations','period','date_session_end', ]
我希望能够在我的 html 模板中分别呈现所有这些字段,即html divs
专门放置每个字段。
我正在使用django-crispy-forms和 bootstrap-3
目前,我正在以单独的方式渲染字段,使用标签,{{ form.<nombre-del-campo> }}
即以这种方式手动渲染字段:
<div class="row">
<div class="col-md-2 pacient-pic">   <img class="img-circle " src="{{ sessionedit.patient.user.photo.url }}" alt="User Avatar"> </div>
{{ form.non_field_errors }}
<div class="col-md-3 col-xs-12 col-sm-6">
<ul class="pacient-ul">
{{ form.patient.errors }}
<li><strong>Paciente:</strong>  {{ form.patient }} </li>
</ul>
</div>
<div class="col-md-4 col-xs-12 col-sm-6">
<ul class="pacient-ul">
<li><strong>Terapeuta:</strong>  {{ form.therapist }}</li>
<li><strong>Médico:</strong>  {{ form.medical }}</li>
</ul>
</div>
</div>
.
.
And so sucessively more divs and fields
但这使我失去了效果或引导样式,因为我没有使用RehabilitationSessionForm
使用某些属性创建表单的类crispy-forms
结果:
我的表单显示没有 bootstrap-3 css 和 js 效果
如何使用 django-crispy-forms 呈现我的表单?
更新
如果我在基本设计模板中有这个
<div class="box-body">
<div class="row">
<div class="col-md-2 pacient-pic">   <img class="img-circle " src="dist/img/user7-128x128.jpg" alt="User Avatar"></div>
<div class="col-md-3 col-xs-12 col-sm-6">
<ul class="pacient-ul">
<li><strong>Paciente:</strong>  Valentina Sepúlveda</li>
<li><strong>D.I:</strong>  1037548297</li>
</ul>
</div>
<div class="col-md-3 col-xs-12 col-sm-6">
<h4>Sesión N°</h4>
<h3 class="padding-left">1</h3>
</div>
<div class="col-md-4 col-xs-12 col-sm-6">
<ul class="pacient-ul">
<li><strong>Fecha de inicio:</strong>  12/01/1991 - 17:34 hs</li>
<li><strong>Terapeuta:</strong>  Bernardo</li>
<li><strong>Médico:</strong>  Christian</li>
</ul>
</div>
</div>
</div>
如何从 中的方法呈现这些__init__
字段forms.py
?
我试过这个:
class RehabilitationSessionForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(RehabilitationSessionForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_method = 'post'
#self.helper.add_input(Submit('submit', u'Guardar'))
self.helper.layout=Layout(
Div(
FormActions(
Submit('save', 'Save changes'),
css_class='box-body btn btn-success btn-sm pull-right fa fa-pencil',
),
Div('patient', css_class='col-md-3 col-xs-12 col-sm-6'),
Div('therapist', css_class='col-md-4 col-xs-12 col-sm-6'),
Div('medical', css_class='col-md-4 col-xs-12 col-sm-6'),
css_class='row',
)
)
在我的真实模板中,数据到达或我用 绘制表单的地方{% crispy form %}
,它看起来像这样
{% crispy form %}
<div class="box-body">
#<!--<div class="row">-->
<div class="col-md-2 pacient-pic">   <img class="img-circle " src="{{ sessionedit.patient.user.photo.url }}" alt="User Avatar">
</div>
{{ form.non_field_errors }}
#<!--<div class="col-md-3 col-xs-12 col-sm-6">-->
<ul class="pacient-ul">
{{ form.patient.errors }}
<li><strong>Paciente:</strong>  </li>
<li><strong>D.I:</strong>  {{ sessionedit.patient.identity_document }}</li>
</ul>
#<!--</div>-->
<div class="col-md-3 col-xs-12 col-sm-6">
<h4>Sesión N°</h4>
<h3 class="padding-left">{{ sessionedit.id }}</h3>
</div>
#<!--<div class="col-md-4 col-xs-12 col-sm-6"> -->
<ul class="pacient-ul">
<li><strong>Fecha de inicio:</strong>  </li>
<li><strong>Terapeuta:</strong>  </li>
<li><strong>Médico:</strong>  </li>
</ul>
#<!-- </div> -->
#<!-- </div> end row -->
</div>#<!-- /.box-body -->
一般来说,我一直在渲染,但我无法将我的 css 正确放置在字段的 div 中。现在我的表单看起来像这样,在这个 url 中你可以看到这些字段是杂乱无章的,但是根据@German-Alzate-Martinez给出的答案,我已经在渲染我的表单字段并使用方法django-crispy-forms
发送它们__init__
我的forms.py
.
只是我还没有找到如何渲染每件事的解释。
我感谢任何帮助
django-crispy-forms 文档告诉您,您可以帮助从表单的init呈现表单字段,如下所示:
应该注意的是,这是一个演示示例,您可以根据自己的喜好容纳 css 类,以便一切都适合,您也可以省略 strictbutton 的最后一个 div,并添加一个
FormActions(Submit('aceptar', 'Aceptar'))
, 然后在您的模板中,您只需要像这样打电话...希望对你有帮助,有问题欢迎评论