2016-04-13 15 views
2

Djangoのformset(v1.9)では、formset_factory関数にmin_numというオプションがあり、formsetの最小フォーム数を指定します。Djangoのformsetのmin_numがn + 1のformsetをレンダリングする理由

ビューは次のようになります。

class ExampleForm(forms.Form): 
    msg = forms.CharField() 

ExFormSet = formset_factory(ExampleForm, min_num=1) 
ex_set = ExFormSet() 

context = {'ex_set': exp_set) 
return render(request, 'app-name/test.html', context) 

そしてテンプレートは次のようになります。Djangoは常に、その後MIN_NUM引数に与えられた1つの以上のフォームをレンダリングしますが

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

これは一般的なDjango/Pythonの設計で、ゼロでカウントされ始めた理由か、min_num引数の使用を誤解していますか? docs私はそれを理解しているので、変数は検証のためだけに使用されていると言います。

+1

私はあなたの質問に誤植があると推測しますが、他の場所に記載されていない 'exp_set'の文脈で' ex_set'を設定してください – Sayse

答えて

3

もう1つの形式は、キーワードパラメータのデフォルト値は1です。キーワードextraの詳細についてはhereをご覧ください。

+0

はい 'extra'が' min_num'パラメータという意味では、最初に表示される空のフォームの数を決定します。しかし、なぜ 'extra'引数が与えられていない場合、' min_num'はこの動作を示していますか? – Jarno

+0

@Jarnoは 'extra'がデフォルト値' 1'を持っているので、明示的に渡さなければ使用されます。 'extra = 0'を明示的に渡してみてください。 –

+0

空のフォームの数は、「余分+最小」によって決まるようです。例えば。 'form_factory()' 'extra = -2、min_num = 5'を渡すと3つの空の形が得られます。それでも、私は同じパラメータに影響を与える2つの引数の意味を理解していません。 – Jarno

関連する問題