class UserModelSerializer(serializers.ModelSerializer): profile = ProfileModelSerializer(read_only=True) class Meta: model = User fields = ('username', 'first_name', 'profile', 'last_name', 'email', 'phone_number')
def profile(self, request, *args, **kwargs): user = self.get_object() profile = user.profile partial = request.method == 'patch' serializer = ProfileModelSerializer(profile, data=request.data, partial=partial) serializer.is_valid(raise_exception=True) serializer.save() data = UserModelSerializer(user).data return Response(data)
class UserModelSerializer(serializers.ModelSerializer): """User model serializer.""" profile = ProfileModelSerializer(read_only=True) teacher = TeacherModelSerializer(read_only=True) class Meta: """Meta class.""" model = User fields = ('id', 'username', 'first_name', 'last_name', 'email', 'phone_number', 'is_staff', 'profile', 'teacher') read_only_fields = ( 'id', 'username', )
def profile(self, request, *args, **kwargs): """ Update profile data """ user = self.get_object() profile = user.profile partial = request.method == 'PATCH' serializer = ProfileModelSerializer(profile, data=request.data, partial=partial) serializer.is_valid(raise_exception=True) serializer.save() data = UserModelSerializer(user).data return Response(data, status=status.HTTP_200_OK)
class UserModelSerializer(serializers.ModelSerializer): """User Model Serializer""" # vamos a redefinir el campo profile para traer la picture y biography # definiremos los atributos que vamos a mostrar en el serializer profile= ProfileModelSerializer(read_only=True) class Meta: """Meta Class""" model = User # importamos el modelo de usuario que contiene todos nuestros datos fields =( 'username', 'first_name', 'last_name', 'email', 'phone_number', # usaremos una referencia hacia el profile 'profile', )
def profile(self, request, *args, **kwargs): """Update profile data.""" user = request.user profile = user.profile partial = request.method == 'PATCH' serializer = ProfileModelSerializer( profile, data=request.data, ) serializer.is_valid(raise_exception=True) serializer.save() data = UserWithoutTeacherModelSerializer(user).data return Response(data)
def profile( self, request, *args, **kwargs ): # Esta vista solo se permitira para el dueño de la cuenta.Esta vista tendra un path que sera despues la ruta de actualizar user <path update user>/profile/ para que actualice algo especifico """Actualiza datos de perfil""" user = self.get_object( ) # Devuelve el usuario que se coloca con su username en la url profile = user.profile partial = request.method == 'PATH' serializer = ProfileModelSerializer( profile, data=request. data, # Son los datos recibidos desde el request desde el body partial= partial # Este campo permite saber al serializer que sera parcial. Por defecto el serializer pensara que una actualizacion total. Para ambas peticiones no nos devolvera error si no mandamos nada, por que ningun dato es requerido ) serializer.is_valid(raise_exception=True) serializer.save() data = UserModelSerializer( user ).data # Usamos UserModelSerializer por que el serializer tendra un campo llamado profile return Response(data)