django - BaseInlineFormSet does not clean invalid characters -


i trying clean inline formset data. have 3 rules: 1) must supply @ least 1 name, 2) if specify name must specify both first , last, , 3) no spaces. when data saves, spaces still saved database. doing wrong?

another issue validation errors not displayed. why that?

forms.py: class usernameform(forms.models.baseinlineformset):     def clean(self):         super(usernameform, self).clean()         count = 0         form in self.forms:             try:                 firstname = form.cleaned_data.get("name_first")                 middlename = form.cleaned_data.get("name_middle")                 lastname = form.cleaned_data.get("name_last")                 if firstname or middlename or lastname:                     if len(firstname) == 0 or len(lastname) == 0:                         raise forms.validationerror("first , last name required.")                  if form.cleaned_data , not form.cleaned_data.get('delete', false):                     count += 1                     form.cleaned_data['name_first'] = firstname.replace(" ",'')                     form.cleaned_data["name_middle"] = middlename.replace(" ",'')                     form.cleaned_data["name_last"] = lastname.replace(" ",'')             except attributeerror:                 pass         if count < 1:             raise forms.validationerror('you must have @ least 1 order')  views.py usernameformset = inlineformset_factory(profile, alias, formset=usernameform, extra=2, can_delete=true ) if request.method == 'post':     cnameformset = usernameformset(request.post, request.files, instance=cprofile)     if cnameformset.is_valid():         testresults  = cnameformset.save(commit=false)         form in testresults:             form.save() 

you can apply both form , formset. use formset validate data across forms , form validate data within form , raise validation errors.

usernameformset = inlineformset_factory(profile,                                         alias,                                         form=usernameform,                                         formset=atleastone,                                         extra=2,                                         can_delete=true )  class atleastone(forms.models.baseinlineformset):     def clean(self):         count = 0         form in self.forms:             try:                 if form.cleaned_data , not form.cleaned_data.get('delete', false):                     count += 1             except attributeerror:                 pass         if count < 1:             raise forms.validationerror('you must have @ least 1 name')  class usernameform(forms.modelform):    class meta:         model = alias    def clean(self):        cleaned_data = self.cleaned_data        # check 1: must have first , last.        firstname = cleaned_data.get("name_first")        middlename = cleaned_data.get("name_middle")        lastname = cleaned_data.get("name_last")        if firstname or middlename or lastname:            if len(firstname) == 0 or len(lastname) == 0:                raise forms.validationerror("first , last name required.")        # check 2: no spaces.        cleaned_data["name_first"] = firstname.replace(" ",'')        cleaned_data["name_middle"] = middlename.replace(" ",'')        cleaned_data["name_last"] = lastname.replace(" ",'')        return cleaned_data 

Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -