美文网首页程序员
rest_framework.serilizer中获取user

rest_framework.serilizer中获取user

作者: 北海鲸落 | 来源:发表于2020-06-01 09:01 被阅读0次

    为了更精确的序列化,有时候不可避免的需要在序列化时进行ORM操作,同时有时需要校验该user是否有权限等,因此,可以通过这种方式


    1. view传到TestSerializer

    user = request.user
    user_serializer = TestSerializer(instance=userArray, many=True, context={'user': user})
    

    2. 在TestSerializer中获取

    class TestSerializer(serializers.ModelSerializer):
        shcool = serializers.SerializerMethodField()
    
        def get_accessmentjournal(self, obj):
            user = self.context.get("user")
            if user:
                try:
                    school = obj.school.get(user_id=user.id )
                    return {
                    'id': school.class.id,
                    'name': school.class.name,
                    'rate': school.class.rate,
                    'evaluation': school.class.evaluation}
                except:
                    return None
            return None
        class Meta:
            model = LessonImpl
            fields = ('pk', 'lesson', 'add_time', 'start_time', 'status',  'sequence', 'chapterjournal_set', 'accessmentjournal')
    
    

    注意

    • 尽量少写else,会影响性能
    • 使用get()时,尽量赋值,而不是在判断条件里使用
    # 推荐
    user = self.context.get("user")
    if user:
    
    # 不推荐
    if self.context.get("user"):
    

    相关文章

      网友评论

        本文标题:rest_framework.serilizer中获取user

        本文链接:https://www.haomeiwen.com/subject/yjcjzhtx.html