【问题标题】:Does the django's formset.is_valid() work?django 的 formset.is_valid() 工作吗?
【发布时间】:2013-07-15 18:45:31
【问题描述】:

我有这么简单的看法:

import datetime
from django import forms
from django.forms.formsets import formset_factory
from django.http import HttpResponse
from django.shortcuts import redirect, render, render_to_response
from django.views.generic.detail import DetailView

from form_utils.forms import BetterForm

from fb_app import models as fb_model
from learn_forms import models as lf_model

class ArticleForm(forms.Form):
    title = forms.CharField(required=True)
    #pub_date = forms.DateField()


def formset(request):
    print request.POST
    ArticleFormSet = formset_factory(ArticleForm)  # [1]
    if request.method == 'POST':
        formset = ArticleFormSet(request.POST)
        print formset.is_valid()
        if formset.is_valid():
            # do something with the formset.cleaned_data
            pass
    else:
        formset = ArticleFormSet()
        print formset.is_valid()
    return render(request, 'formset.html', {
        'formset': formset,
    })

我用空的 title 字段单击提交,并且表单集验证说它是有效的(我希望收到有关所需值的消息) 但是如果将 formset 换成这样的形式:

ArticleFormSet = ArticleForm

在标记为:“# [1]”的行中,表单显示消息“此字段是必需的”(我期望的)

html 文件:

<form method="post" action="/lf/formset">
    {% csrf_token %}
    <table>
        {{ formset }}
    </table>
    <input type="submit" name="submit" >
</form>

怎么了?

【问题讨论】:

  • 哪里失败了?你到底得到了什么错误?请注意,else 子句中的is_valid() 调用将失败,因为unbound forms are not valid
  • 已更新,我希望收到有关所需标题的消息

标签: django validation formset


【解决方案1】:

问题在于您如何在模板中调用表单。它应该是这样的:

<form method="post" action="/lf/formset">
    <table>
        {% csrf_token %}
        {{ formset.as_p }}
    </table>
    <input type="submit" name="submit" >
</form>

您可以通过here了解更多信息。

【讨论】:

    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2021-03-05
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多