我一直在搜索有关如何使用Django的模型默认验证的一些示例,但也能够更改属性。
注意:这将是一个非常高级别的解释,以避免一个长时间的问题
到目前为止,生成表单的简单方法是执行
<form id="some_form" method="post" action="/do/something/"
enctype="multipart/form-data" autocomplete="off">
{{ some_form }}
<button name="submit" type="submit" class="btn btn-custom-primary">Submit</a>
</form>
上面的部分会自动使用你在forms.py和views.py上的内容来渲染一个能够为你生成验证的功能完整的表单,因此当你点击提交时,如果有丢失的数据,它会让你知道你错过了什么,它不会让你经历。
但是当您想要向表单添加/更新属性时会发生什么?通过属性CSS属性,如class,id等,如果我决定使用&#39;手册&#39;我可以控制什么属性的方式,而不是让django自动为我渲染表格,如下所示,我放弃了django的默认验证设置。
<form>
{% for field in some_form %}
<label class="some_class" for="{{ field.name }}">{{ field.label }}</label>
{{ field }}
{% endfor %}
<button type="submit">Submit</button>
</form>
现在,我找到了一种在forms.py上添加一些属性的方法,见下文
class DoSomething(forms.ModelForm):
def __init__(self, user, *args, **kwargs):
super(DoSomething, self).__init__(*args, **kwargs)
for field in self.Meta.fields:
self.fields[field].widget.attrs.update({
'class': 'form-control',
})
如果我像这样初始化类,我可以添加属性到输入,但我还没有能够为标签添加属性,我想一旦我设法做到这一点,我将能够渲染它正确。这点可能很简单,但我觉得我已经累了。
如何在不丢失默认验证的情况下设置表单样式?是我迄今为止所做的还是有不同的做法吗?
请告知,
EFX
答案 0 :(得分:0)
试试这个;
AT
答案 1 :(得分:0)
答案一直存在,我在for block {{field.errors}}
之间缺少一段代码<form>
{% for field in some_form %}
{{ field.errors }}
<label class="some_class" for="{{ field.name }}">{{ field.label }}</label>
{{ field }}
{% endfor %}
<button type="submit">Submit</button>
</form>
一旦我把那部分放在那里,当我把它们留空或者放一个无效的值时会出现验证错误消息
答案 2 :(得分:0)
您可以使用field_args。 假设我有一个表单类city_form,我在其中调用模型city_master。
class city_form(ModelForm):
class Meta:
model = city_master
fields = ('city', 'state', 'status')
field_args = {
"city" : {
"error_messages" : {
"required" : "Please let us know what to call you!"
}
},
"state" : {
"+error_messages" : {
"required" : "Please also enter some notes.",
"invalid" : "This is not a valid state."
}
}
}