Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class CandidateProfile(models.Model):
- user = models.OneToOneField(
- User, on_delete=models.CASCADE, related_name="user")
- exp = models.IntegerField(null=True, blank=True)
- class CandidateProfileSerializer(serializers.ModelSerializer):
- id = serializers.IntegerField(source='pk', read_only=True)
- username = serializers.CharField(source='user.username')
- email = serializers.CharField(source='user.email')
- groups = serializers.RelatedField(read_only=True)
- password = serializers.CharField(max_length=128, source='user.password,read_only=True')
- class Meta:
- model = CandidateProfile
- fields = ('id', 'username', 'password', 'email', 'groups')
- depth = 1
- def update(self, instance, validated_data):
- print("In Update" + '*' * 50)
- user = User.objects.get(pk=instance.user.pk)
- user = instance.user
- user.email = validated_data.get('user.email', user.email)
- user.first_name = validated_data.get('user.first_name',
- user.first_name)
- user.last_name = validated_data.get('user.last_name', user.last_name)
- user.save()
- instance.gender = validated_data.get('gender', instance.gender)
- instance.save()
- return instance
- def create(self, validated_data):
- print('*' * 100)
- print(validated_data)
- user_data = validated_data.pop('user')
- print(user_data)
- user = User.objects.create_user(**user_data)
- g = Group.objects.get(name="Candidate")
- g.user_set.add(user)
- user.save()
- print(validated_data)
- print('*' * 100)
- profile = CandidateProfile.objects.create(user=user, **validated_data)
- return user
- class CandidateRegister(APIView):
- def get(self, request, format=None):
- candidate_list = User.objects.filter(groups=Group.objects.get(
- name="Candidate"))
- serializer = CandidateProfileSerializer(candidate_list, many=True)
- return Response(serializer.data)
- def post(self, request, format=None):
- serializer = CandidateProfileSerializer(data=request.data)
- if serializer.is_valid():
- serializer.save()
- return Response(serializer.data, status=status.HTTP_201_CREATED)
- return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- Got AttributeError when attempting to get a value for field `username` on serializer `CandidateProfileSerializer`.
- The serializer field might be named incorrectly and not match any attribute or key on the `User` instance.
- Original exception text was: 'CandidateProfile' object has no attribute 'username'.
- class CandidateProfileSerializer(serializers.ModelSerializer):
- id = serializers.IntegerField(source='pk', read_only=True)
- username = serializers.SerializerMethodField()
- def get_username(self, obj):
- return obj.user.username
Add Comment
Please, Sign In to add comment