我正在使用下面的脚本(位于DJango模板中)来显示与特定Y0
相关联的i0
。此模板的目的是添加和修改模型的数据。
模板的名称是:model_name_form.html(例如:customer_form.html用于表Customer的Model表示)
为了添加/修改数据,正在使用input fields
。
问题在于,当使用下面的脚本时,字段将使用一种默认表示。就我而言,字段需要更加自定义。
自定义Model Form
和Model Form
使表单看起来更好。
我从这开始(在显示表单的模板中):
labels
这就变成了这个:
input fields
但我们需要的是类似于以下内容的标签/输入演示文稿:
{% for field in form %}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<span class="text-danger small"> {{ field.errors }} </span>
</div>
<label class="control-label col-sm-2"> {{ field.label_tag }} </label>
<div class="col-sm-10"> {{ field }} </div>
</div>
{% endfor %}
如何控制与以下相关联的属性:
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<span class="text-danger small">
</span>
</div>
<label class="control-label col-sm-2">
<label for="id_companyname">Company Name:</label>
</label>
<div class="col-sm-10">
<input name="companyname" id="id_companyname" type="text" maxlength="30">
</div>
</div>
例如,可以看到上面的内容,<div class="form-group">
<label>Default Input Group</label>
<div class="input-group">
<input class="form-control" placeholder="Username" aria-describedby="sizing-addon1" type="text">
<span class="input-group-addon" id="sizing-addon1">@</span>
</div>
</div>
生成
{{ field.errors }}
{{ field.label_tag }}
{{ field }} <<< especially this one
但我们需要的是:
{{ field }}
如何控制标签和输入字段的显示方式?
TIA
答案 0 :(得分:0)
您可以使用窗口小部件属性来更好地控制HTML输出,例如:
class MyModelForm(ModelForm):
class Meta:
model = MyModel
fields = '__all__'
widgets = {
'my_field': TextInput(attrs = {
'placeholder': 'Ingrese el contacto',
'class': 'form-control',
'data-validation': 'custom',
}),
'my_other_field': Select(attrs = {
'class': 'form-control selectpicker',
'data-live-search': 'true',
'title': 'Elegir un tipo',
'data-validation': 'required',
'data-validation-error-msg': 'Debe elegir una de las opciones.',
}),
在你的情况下,你可以这样做:
widgets = {
'my_field': TextInput(attrs = {
'placeholder': 'Username',
'class': 'form-control',
'aria-describedby': 'sizing-addon1',
}),
要获得更多控制权,您可以使用http://timelessname.com/elfbin/,甚至可以尝试使用库custom template filters,但这会增加一层可能不需要的复杂性。
答案 1 :(得分:0)
我有一个类似的问题,其中默认表单标签缺少空格。我可以通过将forms.py
中的默认标签覆盖为空白来解决此问题:
quantity = forms.TypedChoiceField(label='', choices=PRODUCT_QUANTITY_CHOICES)
,然后在HTML中创建一个新标签。仅仅覆盖forms.py
中的标签是行不通的。