django 表单在一次提交中填充多个相同的字段表单
django form populate multiple identical field form in one submit
我不想使用 django form
class 因为它们不会给我太多灵活性。
我有一个表单,其中随机数字段很容易请求。我正在尝试填充出现的表单的多个值。
这是我的models.py
class Profile(models.Model):
name = models.CharField(max_length=100)
photo = models.FileField()
这是我的 form.html
<form method="POST" action="{% url 'form' %}">
{% csrf_token %}
{% for i in range %}
<input type="text" id="name" name="name"><br>
<input type="file" id="photo" name="photo"><br><br>
{% endfor %}
<input type="submit" value="Submit">
</form>
您可能注意到我正在使用 for 循环渲染字段。
也就是说,会根据用户的要求出现尽可能多的字段。
所以我想填充这些模型。
我的观点是这样的
def form_view(request):
if request.method == 'POST':
# Need to puplate the form
return render(request, 'form.html', {'range': range(40)})
任何人都可以帮助我如何实现这一目标?我正在努力实现这一目标。
您可以为此使用 modelformset_factory
。这样,
在你的views.py
from .models import Profile
from django.forms import modelformset_factory
def form_view(request):
form_range = 40 # set the range here
ProfileFormSet = modelformset_factory(Profile, fields=("name", "photo"), extra=form_range, max_num=form_range)
formset = ProfileFormSet(request.POST or None)
if request.method == "POST":
if formset.is_valid():
formset.save()
return render(request, "form.html", {"profile_formset": formset})
并在您的表单中 html
<form method="POST" action="{% url 'form' %}">
{% csrf_token %}
{{ profile_formset.as_p }}
<input type="submit" value="Submit">
</form>
我不想使用 django form
class 因为它们不会给我太多灵活性。
我有一个表单,其中随机数字段很容易请求。我正在尝试填充出现的表单的多个值。
这是我的models.py
class Profile(models.Model):
name = models.CharField(max_length=100)
photo = models.FileField()
这是我的 form.html
<form method="POST" action="{% url 'form' %}">
{% csrf_token %}
{% for i in range %}
<input type="text" id="name" name="name"><br>
<input type="file" id="photo" name="photo"><br><br>
{% endfor %}
<input type="submit" value="Submit">
</form>
您可能注意到我正在使用 for 循环渲染字段。
也就是说,会根据用户的要求出现尽可能多的字段。
所以我想填充这些模型。
我的观点是这样的
def form_view(request):
if request.method == 'POST':
# Need to puplate the form
return render(request, 'form.html', {'range': range(40)})
任何人都可以帮助我如何实现这一目标?我正在努力实现这一目标。
您可以为此使用 modelformset_factory
。这样,
在你的views.py
from .models import Profile
from django.forms import modelformset_factory
def form_view(request):
form_range = 40 # set the range here
ProfileFormSet = modelformset_factory(Profile, fields=("name", "photo"), extra=form_range, max_num=form_range)
formset = ProfileFormSet(request.POST or None)
if request.method == "POST":
if formset.is_valid():
formset.save()
return render(request, "form.html", {"profile_formset": formset})
并在您的表单中 html
<form method="POST" action="{% url 'form' %}">
{% csrf_token %}
{{ profile_formset.as_p }}
<input type="submit" value="Submit">
</form>