【问题标题】:How I can save many forms with formset?如何使用 formset 保存许多表单?
【发布时间】:2016-05-22 01:26:50
【问题描述】:

我看到您可以使用屏幕将多个表单一起记录,在我的示例中,我想同时回答几个问题。 我选择我的问题并回答我的有效问题,但它并没有记录每当最后一个表格...... 我怎样才能让它同时记录所有信息? 它每次只在我的数据库中注册最后一个表单...

所以我有这样的表格:

class NameForm(forms.ModelForm):
    class Meta:
        model = Reply
        fields = ('question','user','answer')

views.py:

def get_name(request):
    questions = Question.objects.all()
    NameFormSet = modelformset_factory(model=Reply, form=NameForm, extra=2, max_num=2)
    logged_user = get_logged_user_from_request(request)
    if request.method == 'POST':  
        formset = NameFormSet(request.POST, request.FILES)
        if formset.is_valid():
            formset.save()
            return HttpResponse('Successfully')
        else:
            return render_to_response('polls/name.html')
    else:
        formset = NameFormSet()
    return render_to_response('polls/name.html', {'formset': formset, 'questions':questions,'logged_user':logged_user})

为了完成我的模板:

<form method="post" action="">
    <table>
        {{ formset }}
    </table>

     <input type="submit" value="Submit" />
</form>

我忘了把它同时记录我的所有表格吗?

【问题讨论】:

    标签: python django forms formset


    【解决方案1】:

    我会尝试给你一个正确的方法来做到这一点(我不会测试我给你的代码)。

    你应该尝试在视图中定义一个表单数组:

    questions = Question.objects.all()
    form_list = []
    if request.POST:
        for question in questions:
            current_form = NameForm(request.POST, instance=question)
            if current_form.is_valid():
                current_form.save()
                return HttpResponse('Successfully')
    else:
        for question in questions:
            form_list.append(NameForm(instance=question))
    

    并在模板中显示所有表单:

    <form method="post" action="">
        {% for form in form_list %}
                <table>
                    {{ form.asp_p }}
                </table>
        {% endfor %}
        <input type="submit" value="Submit" />
    </form>
    

    如果您想了解更多详情:

    self.instance in Django ModelForm

    django submit two different forms with one submit button

    【讨论】:

    • 您的代码没有错误,但没有记录任何内容
    • 对不起...祝你解决问题:)
    猜你喜欢
    • 2019-04-15
    • 2023-04-02
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多