如果某个字段在小部件级别出现错误,我该如何访问?
使用默认值我尝试过:
{% if widget.attributes.has_errors %} or {% if widget.has_errors %}
但不工作。
我使用自定义小部件模板,我正在考虑使用自定义表单字段并覆盖默认字段。
I know clean
方法存在,但我不知道如何将我想要的动态(非默认)数据/属性推送到小部件。
I tried:
class AWidget(forms.Widget):
def get_context(self, name, value, attrs):
context = super().get_context(name, value, attrs)
has_errors = context['widget']['attrs'].pop('has_errors', None)
context['widget']['has_errors'] = has_errors
它适用于errors
但我不知道是否是最好的选择,加上我想从表单字段传递其他值/属性,我认为尝试覆盖表单字段会更好,但我不知道具体如何。
还可以使用以下方法访问各个属性:
{{ widget.attrs.maxlength }} or {{ widget.attrs.items.maxlength }}
即使在 for 循环中 acces 有效
我知道我可以添加一个带有一类错误的父 div:
<div class="{% if form.field.errors %}pass_error{% endif %}">
{{ form.field }}
</div>
但是,这意味着 CSS 级别的巨大变化。
我已经用自定义小部件覆盖了所有 Django 小部件,错误时我不需要只是为了改变边框颜色,但要显示或不显示小部件模板的不同元素,并且其中一些元素的位置会发生变化。
我已经修改了基于的小部件以添加错误,但我希望通过从字段传递到小部件(参数取决于错误类型)来在字段级别以更优雅的方式执行此操作。
所以我的问题是我需要覆盖什么才能从字段传递到小部件错误和其他变量?