def __init__(self, data=None, files=None, instance=None, save_as_new=False, prefix=None, queryset=None, **kwargs): if self.parent_fk_name: if instance is None: self.instance = self.fk.model() else: self.instance = instance self.save_as_new = save_as_new if self.instance.id: object = getattr(instance, self.parent_fk_name) if object and object.id: qs = self.model.objects.filter(pk=object.id) else: qs = self.model.objects.none() else: qs = self.model.objects.none() self.extra = 1 BaseModelFormSet.__init__(self, data, files, prefix=prefix, queryset=qs, **kwargs) else: BaseInlineFormSet.__init__(self, data=data, files=files, instance=instance, save_as_new=save_as_new, prefix=prefix, queryset=queryset, **kwargs)
def clean(self): BaseInlineFormSet.clean(self) for form in self.forms: if 'matriculas-0-DELETE' in form.data: raise ValidationError( "Você não pode remover a primeira matrícula.") if not form.data['matriculas-0-numero']: raise ValidationError( "A primeira matrícula não pode ser vazia.")
def total_form_count(self): if self.initial_extra: count = len(self.initial_extra) if self.initial_extra else 0 count += self.extra return count else: return BaseInlineFormSet.total_form_count(self)
def initial_form_count(self): """ set 0 to use initial_extra explicitly. """ if self.initial_extra: return 0 else: return BaseInlineFormSet.initial_form_count(self)
def total_form_count(self): """ here use the initial_extra len to determine needed forms """ if self.initial_extra: count = len(self.initial_extra) if self.initial_extra else 0 count += self.extra return count else: return BaseInlineFormSet.total_form_count(self)
def initial_form_count(self): if self.initial_extra: return 0 else: return BaseInlineFormSet.initial_form_count(self)