Django REST:Auth用户未传递给序列化程序错误 - 需要字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django REST:Auth用户未传递给序列化程序错误 - 需要字段相关的知识,希望对你有一定的参考价值。
我不确定我做错了什么,但经过身份验证的用户未在序列化程序中注册。
models.朋友
class Post(models.Model):
posted_by = models.ForeignKey('auth.User', on_delete=models.CASCADE)
def save(self, *args, **kwargs):
super(Post, self).save(*args, **kwargs)
serialize认识.朋友
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
def create(self, validated_data):
post = Post.objects.create(**validated_data)
# extra code to add images
views.朋友
class PostViewSet(viewsets.ModelViewSet):
serializer_class = PostSerializer
permission_classes = (
permissions.IsAuthenticatedOrReadOnly,
IsOwnerOrReadOnly, )
def perform_create(self, serializer):
serializer.save(posted_by=self.request.user)
我不明白为什么serializer.save(posted_by=self.request.user)
没有按预期工作。它应该传递有关该字段的所需信息。
当我发出POST请求时,我收到错误
{
"posted_by": [
"This field is required."
]
}
我认为这与序列化器中的create
方法有关。出于某种原因,posted_by
不存在于validated_data
(或类似的东西)。我想知道幕后究竟发生了什么。
答案
只需将posted_by
指定为只读字段。
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
read_only_fields = ('posted_by', )
以上是关于Django REST:Auth用户未传递给序列化程序错误 - 需要字段的主要内容,如果未能解决你的问题,请参考以下文章
django-rest-auth 自定义注册无法保存额外字段
带有 django-rest-auth 和 django-rest-knox 的 AttributeError - 令牌序列化器
Django 无法使用 rest-auth/user/ 获取当前用户
从 Django Rest Framework 将经过身份验证的用户传递给 SendBird