我有一个Django rest API。在我的模型中,我有一个用户作为外键。当我用的时候,我不希望用户需要提供他自己的用户。但是如果用户不提供他的用户凭证,序列化程序将无效,因此不会保存。我发现我们可以在用initial_data
验证之前访问序列化的数据,所以我这样做是为了从提供的令牌自动保存用户。用户需要提供除自己用户之外的所有信息。这样可以吗?或者我做了一些不推荐的事情?
@api_view(['POST'])
@permission_classes([IsAuthenticated])
def add_mesure(request):
serializer = MesureSerializer(data=request.data)
serializer.initial_data['user'] = request.user.id
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
1条答案
按热度按时间58wvjzkj1#
由于您已经将令牌作为用户验证的一种形式,因此您可以省略序列化器中的
user
字段(否则,用户可能会输入其他人的id),然后将请求对象传递给序列化器,以便在保存时从中获取用户。此外,要传递request的值,可以使用序列化程序的context参数。