2016-04-13 14 views
2

Django form kümelerinde (s. 1.9), form setindeki minimum form sayısını belirten formset_factory işlevinde bir min_num seçeneği vardır.Django formevlerindeki min_num neden oluşturulduğu n + 1 form kümesine yol açıyor

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) 

Ve şablon şöyle olabilir:

bir görünüm aşağıdaki gibi görünebilir

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

Ancak Django hep o min_num argüman verilen bir daha formunu verecek.

Bunun nedeni, genel Django/Python tasarımının, sıfırdan başlayarak mı, yoksa min_num argümanı kullanımını yanlış anlamam mı? Anladığım kadarıyla docs, değişkenin yalnızca doğrulama için kullanıldığını söylüyor.

+1

Sorunuzdaki bir yazım hatası olduğunu varsayarsınız, ancak bağlamınızda "ex_set" öğesini, başka hiçbir yerde belirtilmeyen "exp_set" olarak ayarlarsınız. – Sayse

cevap

3

Bir başka form, 1 varsayılan değeri olan extra anahtar sözcük parametresinden biridir. extra anahtar kelime parametresi hakkında daha fazla bilgi için here'u okuyabilirsiniz.

+0

Evet, ayrıca, "extra", "min_num" parametresini geçersiz kıldığını da buldum Başlangıçta görüntülenen boş formların sayısını belirlediği anlamında. Ama 'ekstra' argümanı verilmezse min_num bu davranışı neden gösterir? – Jarno

+0

@Jarno, 'extra' varsayılan değeri '1' olduğundan, bunu açıkça iletmezseniz kullanılır, 'extra = 0' ifadesini açıkça geçirmeyi deneyin. –

+0

Görünüşe göre boş formların sayısı 'extra + minum' ile belirlendi. Örneğin. Eğer form_factory() '' extra = -2, min_num = 5' geçersem 3 boş form alırım. Yine de aynı parametreyi etkileyen iki argüman hissini anlamıyorum. – Jarno

İlgili konular