嘿伙计我正在使用自举开关,看起来我想要添加一个我需要的标签:
<input name="switch-labelText" type="checkbox" data-label-text="Label">
我正在使用crispy表单,我可以看到我可以使用Field添加属性,如下所示:
Field('field_name', css_class="black-fields")
这对我来说都很有意义,但我似乎无法添加数据标签文本。所以我的问题是我可以使用crispy表单创建自定义属性吗?
这是我的表格:
class InstanceCreationForm(forms.Form):
some_field = forms.BooleanField(required=False)
some_field2 = forms.BooleanField(required=False)
some_field3 = forms.BooleanField(required=False)
def __init__(self, *args, **kwargs):
super(InstanceCreationForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_show_labels = False
self.helper.layout = Layout(
#This is a syntax error
Field('some_field', data-label-text="whatever")
)
self.helper.add_input(Submit('submit', 'Submit'))
答案 0 :(得分:4)
来自the docs:
如果你想设置html属性,用
data-name
之类的连字符分隔单词,因为Python不支持关键字参数中的连字符,连字符是HTML中的常用符号,下划线将被翻译成连字符,所以你会这样做:Field('field_name', data_name="whatever")
因此,您需要使用关键字data_label_text
。
Field('some_field', data_label_text="whatever")
答案 1 :(得分:0)
来自源代码。
# We use kwargs as HTML attributes, turning data_id='test' into data-id='test'
self.attrs.update(dict([(k.replace('_', '-'), conditional_escape(v)) for k, v in kwargs.items()]))
它将所有的kwargs放到你的表单元素中,所以你可以做类似的事情。
Field('YOUR_FIELD_NAME', data_label_text="Label")