Saltar al contenido

¿Cómo obtener Request.User en el serializador Django-Rest-Framework?

Solución:

No puede acceder al request.user directamente. Debe acceder al objeto de solicitud y luego obtener el atributo de usuario.

Como esto:

user =  self.context['request'].user

O para estar más seguro

user = None
request = self.context.get("request")
if request and hasattr(request, "user"):
    user = request.user

Puede leer más sobre contexto adicional aquí.

En realidad, no tienes que preocuparte por el contexto. Hay una forma mucho mejor de hacerlo:

from rest_framework.fields import CurrentUserDefault

class PostSerializer(serializers.ModelSerializer):

    class Meta:
        model = Post

   def save(self):
        user = CurrentUserDefault()  # <= magic!
        title = self.validated_data['title']
        article = self.validated_data['article']

Como Igor mencionó en otra respuesta, puede usar CurrentUserDefault. Si no desea anular el método de guardado solo para esto, use doc:

from rest_framework import serializers

class PostSerializer(serializers.ModelSerializer):
    user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault())
    class Meta:
        model = Post
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *