1. ホーム
  2. django

[解決済み] Django-Rest-Framework のシリアライザーで Request.User を取得する方法とは?

2022-04-15 14:35:13

質問

このようなことをやってみたのですが、うまくいきません。

class PostSerializer(serializers.ModelSerializer):

    class Meta:
        model = Post

    def save(self):
        user = self.context['request.user']
        title = self.validated_data['title']
        article = self.validated_data['article']

Serializerクラスからrequest.userにアクセスできるようにしたいのですが、どうすればよいでしょうか?

どのように解決しますか?

にアクセスすることはできません。 request.user を直接使用します。リクエストオブジェクトにアクセスし、user属性を取得する必要があります。

こんな感じで。

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

あるいは、より安全にするために

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

詳細はこちら のコンテキストはこちらをご覧ください。