在模板中遍历模型时,如何将唯一的id字段从模型传递给Django表单?

时间:2019-01-10 17:02:16

标签: django-forms django-templates django-2.0

我需要为从Django模板中的循环生成的每种表单创建唯一的ID。我使用{% for product in products %}遍历一些数据。在我的forms.py中,编辑form.widget.Select属性以添加/更改onchangeid字段。我通过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表单?

1 个答案:

答案 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__