Pinank Lakhani
Pinank Lakhani

Reputation: 1119

IntegrityError : (1048, "Column 'user_dob' cannot be null")

I have modified my serializers fields by as follow,

class UserSerializer(serializers.ModelSerializer):
    id = serializers.IntegerField(source='user_id')
    name = serializers.CharField(source='get_name')
    email = serializers.EmailField(source='user_email')
    dob = serializers.DateField(source='user_dob')
    contactNo = serializers.CharField(source='user_mobileno')
    image = serializers.CharField(source='user_image')
    bloodGroup = serializers.CharField(source='user_blood_group')
    location =     serializers.CharField(source='user_location_id.location_name')
    profession = serializers.CharField(source='user_profession')
    fbId = serializers.CharField(source='user_fb_id')
    userId = serializers.CharField(source='user_random_id')

    class Meta:
        model = UserInfo
        # fields = ['user_id','get_name']
        fields = ["id", "name", "email", "dob", "contactNo", "image", "bloodGroup", "location", "profession", "fbId", "userId"]

Now when i make a create request using following code form views.py,

def create(self, request, *args, **kwargs):
        # partial = kwargs.pop('partial', True)
        serializer = self.get_serializer(data=request.data, partial=True)
        print("kwargs------------>",serializer)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        # headers = self.get_success_headers(serializer.data)
        response = {
                "status" : status.HTTP_201_CREATED,
                "message" : "User Created.",
                "response" : serializer.data
            }
        return Response(response)

It's giving me the following error

IntegrityError: (1048, "Column 'user_dob' cannot be null")

Even after setting partial=True its not working.

PUT request is also not working, Its not updating the data

def update(self, request, *args, **kwargs):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data, partial=True)
        # serializer = self.get_serializer(instance, data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_update(serializer)
        response = {
                "status" : status.HTTP_200_OK,
                "message" : "User Detail Updated.",
                "response" : serializer.data
            }
        return Response(response)

Can anyone help me wth this?

Following are my post params

enter image description here

Upvotes: 2

Views: 1128

Answers (1)

Mukund Sonaiya
Mukund Sonaiya

Reputation: 461

Since you are using a serializer that maps your "user_dob" field with "dob" you should pass parameter according to name provided in serialzers.

Upvotes: 2

Related Questions