我发现此片段可能是一个不错的答案:
如何将CSS类和
“ *”添加到必填字段的标签
这是适应我需要的内容(未经测试,完成后我将对其进行编辑):
from django.utils.html import escapedef readonly_cssclass_adder(bound_field, label_content, label_attrs): if 'readonly' in bound_field.field.widget.attrs: if 'class' in attrs: label_attrs['class'] += " readOnly" else: label_attrs['class'] = "readOnly" return label_content, label_attrsdef add_required_label_tag(original_function, tweak_foos=None): if not tweak_foos: return original_function def required_label_tag(self, contents=None, attrs=None): contents = contents or escape(self.label) if attrs is None: attrs = {} for foo in tweak_foos: contents, attrs = foo(self, contents, attrs) return original_function(self, contents, attrs) return required_label_tagdef decorate_bound_field(): from django.forms.forms import BoundField BoundField.label_tag = add_required_label_tag(BoundField.label_tag,tweak_foos=[readonly_cssclass_adder])
如果您有一个更好的解决方案,而不需要调整所有的BoundField类,我仍在听。
编辑:可能链接到Django统一方式来处理必填字段,但似乎不调用readonly_cssclass_adder。但是我找到了另一个更简单的解决方案,我的readOnly小部件会自动变为readonly ctrlHolder
此添加是我目前最喜欢的回复:
编辑2:最后我选择的另一种方法是“覆盖”
uni_form/field.html不调用BoundField.label_tag 的模板。所以我在这里检查了字段状态。
<label for="{{ field.auto_id }}"{% if field.field.required %} {% else %}{% if field.widget.attrs.readonly %}{% endif %}{% endif %}> {{ field.label|safe }}{% if field.field.required %}<span >*</span>{% endif %}</label>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)