[英]Saving User foreign key upon creation of related model
我的Category
模型与User
有关,但是我找不到将登录的用户ID存储到Category
user_id
字段中的方法。
Category
models.py
:
class Category(models.Model):
user = models.ForeignKey(User, default=None)
name = models.CharField(max_length=32, unique=True)
views.py
:
class CategoryList(APIView):
...
def post(self, request):
"""
Create a new Category
:param request:
:return: Category
"""
user_id = request.user.pk
serializer = CategorySerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=HTTP_201_CREATED)
return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
我可以访问request.user.pk
并看到正确显示,但是我不知道在创建新类别时如何存储该值。
要将当前用户标识添加到新记录,您可以将当前用户作为save
参数传递:
if serializer.is_valid():
serializer.save(user=request.user)
或者,您可以更改序列化程序并使用CurrentUserDefault :
user = serializers.HiddenField(default=serializers.CurrentUserDefault())
来自文档:
可用于表示当前用户的默认类。 为了使用此功能,在实例化序列化程序时,必须已将“请求”作为上下文字典的一部分提供。
因此,要使用CurrentUserDefault,您需要在视图中将请求传递给序列化器:
serializer = CategorySerializer(data=request.data, context={'request': request})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.