django - CurrentUserDefault 在使用 Django Rest 时不起作用
问题描述
我正在使用 Django / Django Rest Framework,我正在寻找一种解决方案来自动插入记录的用户 ID。
我尝试使用, user = serializers.HiddenField(default=serializers.CurrentUserDefault())
:
但我不工作
这是我的序列化程序类
from rest_framework import serializers
from contact.models import Contact
class ContactSerializer(serializers.ModelSerializer):
user = serializers.HiddenField(default=serializers.CurrentUserDefault())
class Meta:
model = Contact
fields = '__all__'
我的观点 :
class ContactView(ListModelMixin, viewsets.GenericViewSet):
queryset = Contact.objects.all()
serializer_class = ContactSerializer
def create(self, request):
serializeObject = ContactSerializer(data = request.data, many=True)
if serializeObject.is_valid():
serializeObject.save()
contactObject = Contact.objects.all()
contactSerializer = ContactSerializer(contactObject, many=True)
return Response(contactSerializer.data, status = status.HTTP_201_CREATED)
return Response(serializeObject.errors, status.HTTP_400_BAD_REQUEST)
解决方案
当您使用时,CurrentUserDefault
您需要将请求传递context
给您的序列化程序,因为序列化程序将从那里获取当前用户。请参阅包括额外的上下文 [DRF 文档]:
class ContactView(ListModelMixin, viewsets.GenericViewSet):
queryset = Contact.objects.all()
serializer_class = ContactSerializer
def create(self, request):
serializeObject = ContactSerializer(data = request.data, many=True, context={'request': request})
...
推荐阅读
- asp.net-web-api - 每个程序集的 Newtonsoft JSON 默认设置
- python - 获取错误区域名称 [us-west-1] 无效 [Kinesis 流与 spark 集成]
- php - 获取 WordPress 画廊中总图像的“计数”
- javascript - 图表不会在状态更改时呈现
- html - px 在网络字体大小中究竟代表什么
- javascript - 数据表 - 在单元格上附加和删除子菜单
- asp.net - 排查 ASP.net WebForms 下载文件问题
- symfony - Symfony 中默认缓存的文件有哪些
- javascript - 使用 Nodejs 将 JSON 映射到 MongoDB
- java - 调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException:需要命名空间属性