[英]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.