2

我不想使用 djangoform类,因为它们不会给我太大的灵活性。

我有一个表格,可以轻松请求随机数字段。我正在尝试填充出现的表单的多个值。

这是我的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)})

谁能帮助我如何实现这一目标?我只是在努力实现这一目标。

4

1 回答 1

0

你可以用modelformset_factory这个。这边走,

在你的意见.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>
于 2020-07-28T15:05:13.020 回答