如何在Django Rest Framework中将当前用户设置为用户字段? [英] How to set current user to user field in Django Rest Framework?
本文介绍了如何在Django Rest Framework中将当前用户设置为用户字段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
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)
serializers.py
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ['id ','user','photo']
views.py / p>
class PhotoListAPIView(generics.ListCreateAPIView):
queryset = Post.objects.filter(hidden = False)
serializer_class = PostSerializer
authentication_classes =(SessionAuthentication,BasicAuthentication)
permission_classes =(IsAuthenticated)
我该怎么做这个?
解决方案
在我的头顶,你可以覆盖 perform_create() code>方法:
class PhotoListAPIView(generics.ListCreateAPIView):
...
def perform_create(self,serializer):
serializer.save(user = self.request.user)
给一个镜头,让我知道如果它的作品
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 field by the currently logged in user.
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)
serializers.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,)
How can I do this?
解决方案
Off the top of my head, you can just override the perform_create()
method:
class PhotoListAPIView(generics.ListCreateAPIView):
...
def perform_create(self, serializer):
serializer.save(user=self.request.user)
Give that a shot and let me know if it works
这篇关于如何在Django Rest Framework中将当前用户设置为用户字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文