我知道,默认情况下,Django 会在呈现格式 id_for_%s
时为每个表单字段自动填充 id。 .可以通过提供 auto_id
来修改格式。具有不同格式的参数作为其对 Form 构造函数的值。
然而,这并不是我正在寻找的。我想要完成的是仅更改表单中众多字段之一的 ID。此外,该解决方案不应中断 form = MyForm(request.POST)
的使用。 .
附注。 MyForm 是一个模型表单,因此每个 id 都来自其对应的 Model 字段。
感谢您的帮助。
最佳答案
表单框架似乎在这里生成标签:
def _id_for_label(self):
"""
Wrapper around the field widget's `id_for_label` class method.
Useful, for example, for focusing on this field regardless of whether
it has a single widget or a MutiWidget.
"""
widget = self.field.widget
id_ = widget.attrs.get('id') or self.auto_id
return widget.id_for_label(id_)
id_for_label = property(_id_for_label)
这意味着您可以为您的字段小部件提供一个“id”键,以将其设置为您想要的任何内容。
foo = forms.CharField(widget=forms.TextInput(attrs={'id': 'foobar'}))
或者覆盖 init 并在表单初始化后设置 attrs。
我不明白这会如何破坏表单,因为 django 的表单框架从来不知道 HTML id(数据没有传递到服务器......)
关于Django:在表单字段级别更改 DOM id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7910353/