1. ホーム
  2. django

[解決済み] Django Rest Frameworkのuserフィールドに現在のユーザーを設定する方法は?

2023-06-14 01:25:56

質問

以下のコードが完全に動作しています。私は Post オブジェクトを作成できます。しかし、DRFのユーザーフィールドには現在ログインしているユーザーを入力するようにしたいのです。

models.py

class Post(TimeStamped):
    user = models.ForeignKey(User)
    photo = models.ImageField(upload_to='upload/')
    hidden = models.BooleanField(default=False)
    upvotes = models.PositiveIntegerField(default=0)
    downvotes = models.PositiveIntegerField(default=0)
    comments = models.PositiveIntegerField(default=0)

シリアライザー.py

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = ['id', 'user', 'photo']

views.py

class PhotoListAPIView(generics.ListCreateAPIView):
    queryset = Post.objects.filter(hidden=False)
    serializer_class = PostSerializer
    authentication_classes = (SessionAuthentication, BasicAuthentication)
    permission_classes = (IsAuthenticated,)

どうすればいいのでしょうか?

どのように解決するのですか?

思いつくところでは、単にオーバーライドして perform_create() というメソッドがあります。

class PhotoListAPIView(generics.ListCreateAPIView):
    ...
    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

これを試してみて、うまくいったら教えてください。