Python 3.6.3,Django 1.11.8,Chrome版本63.0.3239.108(官方 Build)(64位)
我有一个创建项目表单。 在html代码中添加了多个模态。
我在表单类中使用了prefix属性,这可以避免来自其他表单相同名称字段的重复ID。
但是如何处理由单个html中多次使用的一个表单创建的同名多个ID?
form.py
class CreateProjectForm(forms.ModelForm):
prefix = 'create_project'
class Meta:
model = Project
fields = ['project_name', 'project_type', 'description']
widgets = {'description': forms.TextInput(attrs={'placeholder': 'description'})}
我的表格工作正常。但我在Chrome Developer console中一直收到此错误:
[DOM] Found 2 elements with non-unique id #id_create_project-description: <input type="text" name="create_project-description" placeholder="description" maxlength="200" id="id_create_project-description"> <input type="text" name="create_project-description" placeholder="description" maxlength="200" id="id_create_project-description">
(index):1 [DOM] Found 2 elements with non-unique id #id_create_project-project_name: <input type="text" name="create_project-project_name" maxlength="50" required id="id_create_project-project_name"> <input type="text" name="create_project-project_name" maxlength="50" required id="id_create_project-project_name">
(index):1 [DOM] Found 2 elements with non-unique id #id_create_project-project_type: <select name="create_project-project_type" required id="id_create_project-project_type">…</select> <select name="create_project-project_type" required id="id_create_project-project_type">…</select>
答案 0 :(得分:1)
您有两种选择:
在视图中创建单独的表单实例,每个实例都有不同的prefix:
"\\8211"
然后单独渲染每个表单 - 前缀将确保它们具有唯一ID。
如果由于某种原因您想要使用相同的表单类,或者您不知道要渲染的实例数,那么您可以render the form manually并省略ID或使用一些外部逻辑,用于确定ID的前缀。