首页 > 解决方案 > Django REST:序列化程序创建函数 request.user 未找到

问题描述

create 函数给我以下错误:

AttributeError: 'dict' object has no attribute 'user'

看起来 request.user 在此序列化程序中不存在。有没有办法在序列化程序中检索用户 ID?或者这是不可能的?

class EmployeeQuestionSerializer(serializers.ModelSerializer):

    class Meta:
        model = EmployeeQuestion
        fields = (
            'id',
            'employee',
            'question',
            'attempted',
            'passed',
        )

    def create(self, request):
        serializer = EmployeeQuestionSerializer(employee=request.user.pk)
        if serializer.is_valid():
            return serializer.save();

    def update(self, instance, validated_data):
        instance.attempted = validated_data.get('attempted')
        instance.passed = validated_data.get('passed')
        instance.save()
        return instance

标签: djangodjango-rest-frameworkserialization

解决方案


您可以将 views.py 中的请求对象传递给此序列化程序

serializer = EmployeeQuestionSerializer(queryset, context={'request':request})

然后在 serializers.py 中,您可以在 create 中使用 self 访问它: user=self.context['request'].user


推荐阅读