将命名空间属性添加到 django-crispy-form 字段

Adding namespaced attribute to django-crispy-form field

我试图将命名空间属性 (x-bind:attr) 添加到易碎的表单字段,但找不到有效的解决方案。我知道带有破折号的属性是通过使用下划线处理的,我试图通过用双冒号替换双下划线来实现同样的效果,但它没有用,也没有进行替换。

class ChildFormSetHelperUpdate(FormHelper):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.form_tag = False
        self.include_media = False
        self.layout = Layout(
            Div(Field('model', x_bind__disable="disableInput"), css_class='col-md-6'),
        )
        self.render_required_fields = True```

您可以通过在字典中传递关键字参数并使用 ** unpacking operator:

将其扩展到 Field 的 kwargs 来实现此目的
Field('model', **{"x-bind:disable": "disableInput"})

这解决了不能在 Python 变量名中使用破折号和冒号的事实。该属性将呈现为:

<input ... x-bind:disable="disableInput">