Django Rest Framework 在序列化程序中获取用户 [英] Django Rest Framwork get user in serializer

查看:39
本文介绍了Django Rest Framework 在序列化程序中获取用户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以在我的序列化程序中获取用户吗?

I can get the user in my serializer?

例如我有这个序列化器:

For example I have this serializer:

serializers.py

class ClientSearchSerializer(serializers.ModelSerializer):

    client = serializers.SlugRelatedField(
        many=False,
        queryset=Client.objects.filter(user=????),
        slug_field='id'
    )

我可以从 SlugRelatedField 过滤我的查询集吗?

I can filter my queryset from SlugRelatedField?

推荐答案

CurrentUserDefault 应该适合你.

文档:http://www.django-rest-framework.org/api-guide/validators/#currentuserdefault

请注意:

为了使用它,请求"必须作为实例化序列化器时的上下文字典.

In order to use this, the 'request' must have been provided as part of the context dictionary when instantiating the serializer.

如果您正在使用 ModelViewSet 或任何接受 serializer_class 并自动为您初始化的视图/视图集,那么您不必担心.

If you're using ModelViewSet or any view/viewset that takes a serializer_class and automatically initializes it for you, then you don't have to worry about that.

代码示例:

from rest_framework.fields import CurrentUserDefault

class ClientSearchSerializer(serializers.ModelSerializer):

    client = serializers.SlugRelatedField(
        many=False,
        queryset=Client.objects.filter(user=CurrentUserDefault()),
        slug_field='id'
    )

这篇关于Django Rest Framework 在序列化程序中获取用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆