gpt4 book ai didi

django - 如何在 Serializer 的 Validate 处获取 User?

转载 作者:行者123 更新时间:2023-12-04 01:49:50 26 4
gpt4 key购买 nike

在我看来(CreateView)我重写了我的方法 def create,但在我的验证中我无法通过 self.context.get('request').user 获取登录用户,所以,怎么能我让用户登录我的验证?

更新:

错误是:

第 293 行,在验证中
user = self.context.get('请求').user
AttributeError: 'NoneType' 对象没有属性 'user'

更新 2

class OrderAPIPost(CreateAPIView):
permission_classes = (permissions.IsAuthenticated, )
serializer_class = MultipleOrderSerializer
queryset = Order.objects

def create(self, request, *args, **kwargs):
write_serializer = MultipleOrderSerializer(data=request.data)
write_serializer.is_valid(raise_exception=True)
orders = write_serializer.data.get('items')
orders = list(map(lambda order: Order.create_order(order, self.request.user), orders))
read_serializer = list(map(lambda order: OrderSerializerList(order), orders))
read_serializer = list(map(lambda order: order.data, read_serializer))
return Response(read_serializer, status=status.HTTP_201_CREATED)

最佳答案

因此,从我在您的代码中看到的情况来看,您是在不添加上下文的情况下手动创建序列化程序。在大多数情况下,允许 CreateView 自己创建序列化程序就足够了,但如果您确实需要自己创建它,那么您需要记住传递上下文。像这样的东西:

    context = {'request': self.request}
write_serializer = MultipleOrderSerializer(data=request.data, context=context)

您可以检查 View 的 get_serializer() 方法以了解如何正确创建序列化程序。我真的建议您重构代码并尝试使用现有的解决方案来创建序列化程序

关于django - 如何在 Serializer 的 Validate 处获取 User?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53660527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com