我需要为从Django模板中的循环生成的每种表单创建唯一的ID。我使用{% for product in products %}
遍历一些数据。在我的forms.py
中,编辑form.widget.Select属性以添加/更改onchange
和id
字段。我通过views.py
和模板将其渲染为{{form}}
,这是forms.py
中的行:
condition = forms.ChoiceField(choices=condition_choices, widget=forms.Select(attrs={'onchange' : "showChange(this)", "id":"{{product.id}}"}))
我希望该id呈现为与每个产品相关联的唯一ID,并且我希望onchange调用js
函数。当我将表单打印到控制台时,它看起来像这样:
<select name="condition" onchange="showChange(this)" id="{{product.id}}">
<option value="NM / LP">Near Mint / Lightly Played</option>
<option value="MP">Moderately Played</option>
<option value="HP">Heavily Played</option>
<option value="Damaged">Damaged</option>
<option value="Unopened">Unopened</option>
</select>
我希望id字段是实际的id,而不是{{product.id}}
如果将此表单准确地粘贴到html中而不将其呈现为Django表单,则它将按预期工作。如何在不将数据库导入forms.py
/额外数据库调用的情况下,将产品的唯一ID传递给Django表单?
答案 0 :(得分:2)
您不能在.py文件中使用def reproduce(self):
return type(self)(**self.characteristics)
。这是Django模板引擎标签。
在您的 views.py 中,您应按以下方式创建表单:
{{product.id}}
通过表单时,可以在product = Product.objects.get(pk=1)
form = ProductForm(instance=product)
context = {
'form': form
}
方法中使用它的数据。
您的表格将如下所示
__init__