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)