How to raise multiple ValidationError on Django Rest API?

538 views Asked by At

Suppose I have three serializers in function and I want to check the validation. If any errors occur in the condition it Response error message at a time

My function:

def employ_create(request):
    if request.method == 'POST':
        employ_basic_info = data['basic_info']
        employ_academic_info = data['academic_info']
        employ_address = data['address']
        employ_basic_info_serializer = EmployBasicInfoSerializers(data=employ_basic_info)
        employ_academic_info_serializer = EmployAcademicInfoSerializers(data=employ_academic_info)
        employ_address_serializer = EmployAddressInfoSerializers(data=employ_address)
        if employ_basic_info_serializer.is_valid() and employ_academic_info_serializer.is_valid() and employ_address_serializer.is_valid():
            employ_basic_info_serializer.save(employ_id=user_obj)
            employ_academic_info_serializer.save(employ_id=user_obj)
            employ_address_serializer.save(employ_id=user_obj)
            return Response(status=rest_framework.status.HTTP_200_OK)
        status_errors = {
            'employ_basic_info_error':employ_basic_info_serializer.errors,
            'employ_academic_info_error':employ_academic_info_serializer.errors,
            'employ_address_error':employ_address_serializer.errors,
        }
        return Response({'stutase':status_errors}, status=rest_framework.status.HTTP_400_BAD_REQUEST)

I want to return employ_basic_info_serializer, employ_academic_info_serializer, employ_address_serializer errors if any errors occur. How can I do it? pls, help me...

1

There are 1 answers

0
JPG On

Make sure to call the is_valid() method of each serializer object as,

def employ_create(request):
    if request.method == 'POST':
        employ_basic_info = data['basic_info']
        employ_academic_info = data['academic_info']
        employ_address = data['address']
        employ_basic_info_serializer = EmployBasicInfoSerializers(
            data=employ_basic_info)
        employ_academic_info_serializer = EmployAcademicInfoSerializers(
            data=employ_academic_info)
        employ_address_serializer = EmployAddressInfoSerializers(data=employ_address)

        is_valid_employ_basic_info_serializer = employ_basic_info_serializer.is_valid()
        is_valid_employ_academic_info_serializer = employ_academic_info_serializer.is_valid()
        is_valid_employ_address_serializer = employ_address_serializer.is_valid()
        if (
                is_valid_employ_academic_info_serializer and
                is_valid_employ_basic_info_serializer and
                is_valid_employ_address_serializer
        ):
            employ_basic_info_serializer.save(employ_id=user_obj)
            employ_academic_info_serializer.save(employ_id=user_obj)
            employ_address_serializer.save(employ_id=user_obj)
            return Response(status=rest_framework.status.HTTP_200_OK)

        status_errors = {
            'employ_basic_info_error': employ_basic_info_serializer.errors,
            'employ_academic_info_error': employ_academic_info_serializer.errors,
            'employ_address_error': employ_address_serializer.errors,
        }
        return Response(
            {'stutase': status_errors},
            status=rest_framework.status.HTTP_400_BAD_REQUEST
        )