Solution:

def clean(self):
       if any(self.errors):
           # Don't bother validating the formset unless each form is
valid on its own
           return
       for i in range(0, self.total_form_count()):
           form = self.forms[i]
           cleaned_data = form.clean()
           display = cleaned_data.get('display', None)
           if cleaned_data['DELETE'] == False:
                 if display.max_windows() >= display.windows:
                   raise forms.ValidationError("The display have all
windows occupied.")

Put the line if cleaned_data['DELETE'] == False:  to check if the inline
have the attribute DELETE and if is false, to ignore deleted rows in
formset that have true in this attribute. =)

2012/4/30 Guevara <eguevara2...@gmail.com>

> Hello!
>
> The (if display.max_windows() >= display.windows) works fine to
> prevent insert. Behaves as expected.
> But is raised even when the row is REMOVED from the edit formset. =/
>
> ## Models
>
> class Display(models.Model):
>    windows = models.IntegerField()
>
> def max_windows(self):
>        total = self.window_set.all().count() #window is a
> intermediary class to campaign
>        if total:
>            return total
>
> ## Clean method in CampaignInlineFormSet
>
> def clean(self):
>        if any(self.errors):
>            # Don't bother validating the formset unless each form is
> valid on its own
>            return
>        for i in range(0, self.total_form_count()):
>            form = self.forms[i]
>            cleaned_data = form.clean()
>            display = cleaned_data.get('display', None)
>            if display.max_windows() >= display.windows:
>                    raise forms.ValidationError("The display have all
> windows occupied.")
>
> This "if" can not stop me remove a row in inline formset. How can I
> fix this?
> Regards.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to