【发布时间】:2019-12-30 04:50:02
【问题描述】:
我有一个 Django 表单 NameForm。我正在尝试遍历一组值,并且对于每个值,都可以选择显示相同的表单。唯一应该随着表单提交而改变的应该是表单旁边显示的关联值。
举个例子就更清楚了。对于一些数组[1,2,3],我们应该显示:
然后我们可以点击任何open form 图标,填写NameForm 表格。结果信息,包括form_id(在本例中为1, 2, or 3)应返回到forms.py。如何从 index.py 中的NameForm 实例中获取form_id 变量?
我的(hacky)尝试可以在下面找到。问题是我不知道如何访问我在NameForm 对象中创建的form_id 变量。
forms.py
class NameForm(forms.Form):
form_id = None
your_name = forms.CharField(label='Your name', max_length=3)
views.py
def index(request):
if request.method == 'POST':
form = NameForm(request.POST)
form_id = form.form_id # The problem line, as form_id is always None
if form.is_valid():
return HttpResponse( \
' '.join((str(form.cleaned_data['your_name']),form_id ))\
) #Throws TypeError as can't join None and string
else:
forms = []
vals = [1,2,3]
for val in vals:
form = NameForm()
form.form_id = val
forms.append(form)
return render(request, 'post/index.html', {'forms': forms})
index.html
{%for form in forms%}
{{form.form_id}}
<button class="button" onclick="openForm()">Open Form</button>
<div class="myForm">
<form class="form-container" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
<button class="button" onclick="closeForm()">Cancel</button>
</form>
</div>
</br>
{%endfor%}
【问题讨论】:
标签: python html django django-forms