2

私はそのような単純な見方をしています:

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,
    })

空のタイトルフィールドで送信をクリックすると、フォームセットの検証で有効であることが示されます(必要な値に関するメッセージが期待されます)しかし、フォームセットを次のようなフォームと交換すると:

ArticleFormSet = ArticleForm

「# [1]」でマークされた行で、フォームに「このフィールドは必須です」というメッセージが表示されます(これは予想通りです)

html ファイル:

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

どうしたの?

4

1 に答える 1

0

問題は、テンプレート内でフォームを呼び出す方法です。これは次のようになります。

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

詳細については、こちらをご覧ください。

于 2013-07-17T11:18:31.703 に答える