[英]How to add current user into a field in django model serializer
可用于表示当前用户的默认类。 为了使用它,在实例化序列化程序时,“请求”必须作为上下文字典的一部分提供。
owner = serializers.HiddenField(
default=serializers.CurrentUserDefault()
)
更多细节在这里: http : //www.django-rest-framework.org/api-guide/validators/#currentuserdefault
希望这会有所帮助
你会做类似的事情
MySerializer(serializers.HyperlinkedModelSerializer):
user = serializers.ReadOnlyField()
class Meta:
model = My
fields = ('user','title','description')
当您调用序列化程序时,您只需将当前用户添加到序列化程序中,在 views.py 或在序列化程序创建方法中。
在views.py中
serializer.save(user=request.user)
在序列化器创建方法中
def create(self, validated_data): validated_data['user'] = request.user.id obj = ExampleModel.objects.create(**validated_data) return obj
如果您扩展 django 视图通用类,那么您可以添加 views.py
from rest_framework.permissions import IsAuthenticate
class MyView(generics.ListCreateAPIView):
permission_classes = (IsAuthenticated,)
def perform_create(self, serializer):
serializer.save(user=self.request.user)
然后在 serializers.py
class MySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = My
fields = ('user','title','description')
read_only_fields = ('user',) # Add this
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.