【发布时间】:2015-11-18 14:03:39
【问题描述】:
目标: 通过按下按钮将字段动态添加到表单。提交后,将所有字段中的值存储在一个列表中。
(我已经查看了有关 Stack Overflow 的其他问题,并试图找到一个基本教程/说明如何做到这一点:dynamically add field to a form)
我不确定我需要查找/研究什么。我知道它会涉及 JavaScript,但它是 Django 方面,我不确定它是如何工作的。
我为初学者创建了一个基本表单:
Models.py
from django.db import models
class SimpleForm(models.Model):
basic_field = models.CharField(max_length=200)
Forms.py
from django import forms
from models import SimpleForm
class SimpleForm(forms.ModelForm):
class Meta:
model = SimpleForm
fields = ['basic_field']
Views.py
from django.shortcuts import render
from forms import SimpleForm
def index(request):
if request.method == "POST":
# For loop to iterate over dynamically created fields
# Store values in list
else:
form = SimpleForm()
return render(request, "index.html", {'form':form})
Index.html
{% block content %}
<h1>Simple Form</h1>
<form method="POST" class="post-form">{% csrf_token %}
{{ form.as_p }}
<button type="button" class="btn-default">Add Another Field</button>
<button type="submit" class="btn-default">Submit</button>
</form>
{% endblock %}
【问题讨论】:
-
使用 jQuery 或 javascript 将字段添加到表单中(您可以给它们一个通用的类名)。单击提交时,在您自己的事件处理程序中捕获事件,阻止默认操作并将所有字段的值转换为列表或 JSON 对象。将此传递到您的服务器,其他一切照常进行!
-
这是大神亲自解答的问题stackoverflow.com/questions/2942359/…
标签: jquery python django forms