django - 刷新一个表单而不清除另一个表单

时间:2013-03-05 06:59:50

标签: django django-forms django-crispy-forms

我有一个有两种形式的django页面:

class FooForm(forms.Form):
    number = forms.CharField(
        label = "Number",
    )
    num_forms = forms.CharField(
        label = "Num Forms"
    )
...

class BarForm(forms.Form):
    name = forms.CharField(
        label = "Name",
    )
...

一个显示为单个表单,另一个显示为formset:

def myview(request):
        ...
        num_forms = request.GET['num_forms'])
        formsetFactory = formset_factory(BarForm, extra = num_forms)
        formset = formsetFactory()
        return render(request, 'template.html', {'form': FooForm(user), 'formset':formset, 'num_forms':num_forms)

我正在使用django-crispy-forms来设置布局,并在template.html中渲染它们,如下所示:

<form action="{% url myview %}" class="form-horizontal" method="post">
        {% crispy form %}
        {% if num_forms and num_forms > 0 %}
            {% crispy formset formset.form.helper %}
        {% endif %}
 </form>

我想要的行为:form中的字段指定要显示的formset中的表单数量,因此在更新该字段formset时会重新加载显示的许多表单。不应清除或修改form中的其他字段数据。验证可以运行,但我想选择控制何时发生。

有人可以指导我如何实现我的视图和/或模板以使其工作吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以通过在响应呈现时传回FooForm来重新加载值:

form = FooForm(request.POST)
...
return render(request, 'template.html', {'form': form})

不确定如何在未经验证的情况下传回(或在返回前清除验证),但