How to set current user to user field in Django Rest Framework?

前端 未结 9 2007
后悔当初
后悔当初 2020-12-02 15:30

I have the following code working perfectly. I can create a Post object from DRF panel by selecting an image and a user. However I want DRF to populate the user

9条回答
  •  庸人自扰
    2020-12-02 16:04

    As of DRF version 3.8.0 (Pull Request discussion), you can override save() in serializer.

    from rest_framework import serializers
    ...
    
    class PostSerializer(serializers.ModelSerializer):
        user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault())
    
        class Meta:
            model = Post
            fields = ['id', 'user', 'photo']
    
        def save(self, **kwargs):
            """Include default for read_only `user` field"""
            kwargs["user"] = self.fields["user"].get_default()
            return super().save(**kwargs)
    

提交回复
热议问题