14 апреля 2013 г.

django: не разрешать формам в formset быть пустыми

В django при использовании formset по умолчанию* действует такая штука: при сохранении всего formset незаполненные формы (полностью незаполненные) в нём игнорируются и валидируются/сохраняются только остальные. Если по какой-то причине это неудобно (у меня, например, нужно было заполнять минимум N форм в формсете), то можно отключить, установив empty_permitted = False.

* На самом деле ставится некоторым (extra) формам при конструировании formset, что в общем-то логично.

В документации на этот счёт сказано: «The formset is smart enough to ignore extra forms that were not changed».

Можно намертво прописать в конструкторе формы, например.
class BlablaForm(forms.ModelForm):
    class Meta:
        model = Blabla

    def __init__(self, *arg, **kwarg):
        super(BlablaForm, self).__init__(*arg, **kwarg)
        self.empty_permitted = False

Комментариев нет:

Отправить комментарий