django - 动态(干净地)向 Django 表单添加字段

标签 django forms dynamic

嘿伙计们,我知道这个问题已经被多次提出,但我还没有完全理解。正如您在下面看到的,我有一个可以动态告知要创建多少行的表单。 如何创建一个“添加行”链接来告诉 View 要创建多少行?我真的很想在不增加网址的情况下做到这一点...

# views.py
def myView(request):
    if request.method == "POST": 
        form = MyForm(request.POST, num_rows=1)

        if form.is_valid():
            return render_to_response('myform_result.html', context_instance=RequestContext(request))
    else:
        form = MyForm(num_rows=1)

    return render_to_response('myform.html', {'form':form}, context_instance=RequestContext(request))


# forms.py
class MyForm(forms.Form):
    def __init__(self, *args, **kwargs):
        num_rows = kwargs.pop('num_rows',1)
        super(MyForm, self).__init__(*args, **kwargs)

        for row in range(0, num_rows):
            field = forms.CharField(label="Row")
            self.fields[str(row)] = field


# myform.html  http://example.com/myform
<form action="." method="POST" accept-charset="utf-8">
    <ul>
        {% for field in form %}
            <li style="margin-top:.25em">
                <span class="normal">{{ field.label }}</span> 
                {{ field }}
                <span class="formError">{{ field.errors }}</span>
            </li>
        {% endfor %}
    </ul>
    <input type="submit" value="Save">
</form>
<a href="ADD_ANOTHER_ROW?">+ Add Row</a>

最佳答案

当您的表单行数可变时,您需要的是 formset .

关于django - 动态(干净地)向 Django 表单添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2942359/

相关文章:

python - Django 处理可选的 url 参数

php - 表单发布时如何获取复选框元素中未选中复选框的值?

javascript - 联系表单提交按钮在按下时不刷新

javascript - 如何使用 jQuery 和 ajax 仅使用新值或更改值更新表?

php - 链接两个php动态下拉列表

python - 我应该如何以及在哪里创建此事务方法?

python - Django加载本地json文件

php - 没有收到来 self 的 php 表单的电子邮件

在 Haskell 中动态构建列表理解

python - 性能突然从 1024 字节下降到 1025 字节