django - 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
解决方案
您可以将 views.py 中的请求对象传递给此序列化程序
serializer = EmployeeQuestionSerializer(queryset, context={'request':request})
然后在 serializers.py 中,您可以在 create 中使用 self 访问它:
user=self.context['request'].user
推荐阅读
- javascript - 正则表达式获取括号之间的所有内容
- python - 如果一个字符重复多次,则删除该单词
- mleap - 如何创建没有任何输入列的自定义转换器?
- image - Google CloudML serving_input_receiver_fn() b64 解码错误
- java - 如何修复合并排序方法的 ArrayIndexOutOfBoundsException?
- javascript - Javascript 闭包和加载
- karate - 在另一个请求中提取令牌并参数化
- java - Map Reduce 程序在执行时创建一个空目录
- javascript - Javascript:如何打印函数的返回值?
- internet-explorer - 如何在ie中通过javascript将一行插入到tbody特定列中