variable template examples user django-rest-framework user-profile django-serializer

user - examples - django template variable



Cómo agregar userprofile a UserDetailsSerializer en django (1)

Intentando agregar el userprofile de user modelo de user

usando :
marco de descanso django.
módulo rest-auth

Pero el profile = instance.userprofile línea profile = instance.userprofile da error :
*** django.db.models.fields.related.RelatedObjectDoesNotExist: User has no userprofile.

siguiendo las instrucciones de aquí

Además, no estoy seguro de lo que está sucediendo en la declaración super

Posibles errores:
1. instance no está teniendo userprofile después de la declaración super , por lo tanto,
profile = instance.userprofile declaración dando error
2. userprofile usuario debe ser agregado a UserDetailsSerializer

UserDetailsSerializer

class UserDetailsSerializer(serializers.ModelSerializer): class Meta: model = get_user_model() fields = (''username'', ''email'', ''first_name'', ''last_name'') read_only_fields = (''email'', )

UserSerializer

class UserSerializer(UserDetailsSerializer): company_name = serializers.CharField(source="userprofile.company_name") class Meta(UserDetailsSerializer.Meta): fields = UserDetailsSerializer.Meta.fields + (''company_name'',) def update(self, instance, validated_data): profile_data = validated_data.pop(''userprofile'', {}) company_name = profile_data.get(''company_name'') instance = super(UserSerializer, self).update(instance, validated_data) # get and update user profile profile = instance.userprofile if profile_data and company_name: profile.company_name = company_name profile.save() return instance

Solicite más claridad si es necesario.
Gracias por adelantado.


En la documentación , se supone que userprofile ya se creó y ahora se puede actualizar. Solo necesitas un cheque

# get and update user profile try: profile = instance.userprofile except UserProfile.DoesNotExist: profile = UserProfile() if profile_data and company_name: