Python Django REST:Auth user未传递给serialiser错误-需要字段
我不确定我做错了什么,但是经过身份验证的用户没有在serialiser中注册 型号.pyPython Django REST:Auth user未传递给serialiser错误-需要字段,python,django,django-rest-framework,Python,Django,Django Rest Framework,我不确定我做错了什么,但是经过身份验证的用户没有在serialiser中注册 型号.py 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) class PostSerializ
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)
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
class PostViewSet(viewsets.ModelViewSet):
serializer_class = PostSerializer
permission_classes = (
permissions.IsAuthenticatedOrReadOnly,
IsOwnerOrReadOnly, )
def perform_create(self, serializer):
serializer.save(posted_by=self.request.user)
序列化程序.py
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)
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
class PostViewSet(viewsets.ModelViewSet):
serializer_class = PostSerializer
permission_classes = (
permissions.IsAuthenticatedOrReadOnly,
IsOwnerOrReadOnly, )
def perform_create(self, serializer):
serializer.save(posted_by=self.request.user)
视图.py
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)
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
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\u by=self.request.user)
不能按预期工作。它应该传递有关字段的所需信息
当我做POST请求时,我得到的错误是
{
"posted_by": [
"This field is required."
]
}
我认为这与serialiser中的
create
方法有关。由于某些原因,发布的未出现在验证的\u数据中(或类似内容)。我想知道幕后到底发生了什么。只需将posted\u by
指定为只读字段即可
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
read_only_fields = ('posted_by', )