출석부 프로젝트 오류

dooh kim·2020년 5월 16일
0

postman으로 update하려고 하는데 계속 user 필드가 빠져있는 것처럼 보인다
debug 돌려보면서

    def put(self, request, pk, format=None):
        user_profile = self.get_object(pk)
        data = request.data
        #data['user'] = request.user
        # data['user'] = pk
        # print("data:  ", data)
        serializer = UserProfileSerializer(user_profile, data=data)
        # print(serializer)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

if serializer.is_valid():

이부분 에서 계속 error 발생하길래

    def update(self, instance, validated_data):
        # instance.user = User.objects.get(
        #     pk=validated_data.get('pk', instance.pk)
        #                                 )
        print('validated_data', validated_data)
        print(validated_data.get('job', instance.job))
        try:

            instance.job = validated_data.get('job', instance.job)
        except Exception as ex:
            print('에러 발생, job ', ex)
        try:

            instance.job = validated_data.get('job', instance.job)
        except Exception as ex:
            print('에러 발생, job ', ex)
        try:

            instance.sex = validated_data.get('sex', instance.sex)
        except Exception as ex:
            print('에러 발생 sex', ex)
        try:

            instance.phone_number = validated_data.get('phone_number', instance.phone_number)
        except Exception as ex:
            print('에러 발생 phone_number', ex)
        try:

            instance.address = validated_data.get('address', instance.address)
        except Exception as ex:
            print('에러 발생 address', ex)
        try:

            instance.recent_attend_date = validated_data.get('recent_attend_date', instance.recent_attend_date)
        except Exception as ex:
            print('에러 발생 recent_attend_date', ex)
        # try:
        #
        #     instance.email_confirmed = validated_data.get('email_confirmed', instance.email_confirmed)
        # except Exception as ex:
        #     print('에러 발생 email_confirmed', ex)

        instance.save()
        return instance

여기서 에러가 생긴줄 알았는데

class UserProfileSerializer(serializers.Serializer):
    user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
    job = serializers.CharField(required=False, max_length=50,
                                allow_null=True, allow_blank=True, default='정보없음')
    sex = serializers.ChoiceField(choices=UserProfile.SEX, default='Male')
    phone_number = serializers.CharField(validators=[validate_international_phonenumber], allow_blank=True,
                                         allow_null=True, required=False)
    age = serializers.IntegerField(allow_null=True, required=False, default=20)
    address = serializers.CharField(max_length=255, allow_null=True,
                                    allow_blank=True, default='정보없음')
    email_confirmed = serializers.BooleanField(default=False)
    recent_attend_date = serializers.DateField(
        default=datetime.date.today,
        format='%Y-%m-%d',
        input_formats=['%Y-%m-%d', 'iso-8601']
    )

PrimaryKeyRelatedField 여기 user.id를 안 넣어줘서 생긴문제

차후에 로그인 후 request.user로 잡아줄 거니까 문제 될꺼 없지만
이런 문제가 발생했었다.

request.data['uesr'] = user.id
요런식으로 추가해서 해결해줬다.!!

profile
testify to the light

0개의 댓글