jrief / django-angular

Let AngularJS play well with Django
http://django-angular.awesto.com/
MIT License
1.23k stars 293 forks source link

Ajax Validation unique fields. #330

Closed nikolaysm closed 6 years ago

nikolaysm commented 6 years ago

Hello, I am using django 1.11.

When i do update object with ajax i get validation error for unique field. No exclude is done for the object itself.

With post no problem. My form

class CompanyForm(NgModelFormMixin, NgModelForm, Bootstrap3ModelForm):
    scope_prefix = 'company_data'
    form_name = 'company_form'
    # logo = fields.ImageField(label=_("Company logo"), widget=AdminImageWidget, required=False)
    class Meta:
        model = Company

Post handle

def post(self, request, *args, **kwargs):
        response = super(AjaxableResponseMixin, self).post(request, *args, **kwargs)
        if self.request.is_ajax():
            request_data = json.loads(request.body)
            form = self.form_class(data=request_data[self.form_class.scope_prefix])
            if form.is_valid():
                return self.form_valid(form)
            else:
                return self.form_invalid(form)
        return response

Thanks for replying

jrief commented 6 years ago

this has certainly to do with your internal validation logic.

What kind of error in django-angular are you trying to report?

nikolaysm commented 6 years ago

The request post was not handled correctly. It must be

def post(self, request, *args, **kwargs):
        response = super(AjaxableResponseMixin, self).post(request, *args, **kwargs)
        if self.request.is_ajax():
            request_data = json.loads(request.body)
            form = self.get_form()
            form.data = request_data[self.form_class.scope_prefix]
            if form.is_valid():
                return self.form_valid(form)
            else:
                return self.form_invalid(form)

Solved