django - "Incorrect type. Expected pk value, received list."错误 DRF React

标签 django django-models django-rest-framework django-views m2m

尝试发布请求多对多关系时出错

问题是

当我在请求中放入列表时,它显示错误:“类型不正确。预期的 pk 值,已收到列表。” .但它是 m2m 领域所以我怎么能

查看

class PostList(generics.ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = serializers.PostSerializer
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]
    parser_classes = (MultiPartParser, FormParser)

    def post(self, request, *args, **kwargs):
        print(request.data['categories'])
        file_serializer = serializers.PostSerializer(data=request.data)
        print(request.data.dict())
        if file_serializer.is_valid():
                print(request.data)
                file_serializer.save(owner=self.request.user)
                return Response(file_serializer.data, status=status.HTTP_201_CREATED)
        else:
                return Response(file_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

序列化器

class PostSerializer(serializers.ModelSerializer):
    owner = serializers.ReadOnlyField(source='owner.username')
    comments = serializers.PrimaryKeyRelatedField(many=True,queryset=Comment.objects.all())
    categories = serializers.PrimaryKeyRelatedField(many=True,queryset=Category.objects.all())

    class Meta:
        model = Post
        fields = ['id', 'title', 'body','owner','notify_users' ,'comments', 'categories','image']
 

请求我发送

{
'title': 'my demo Title',
 'body': 'it is my demo /nCode for the desc for body',
 'categories': ['1', '2', '3', '4', '5', '6', '7'],
 'image': image
}

这段代码没有错误

{
'title': 'my demo Title',
 'body': 'it is my demo /nCode for the desc for body',
 'categories': '1',
 'image': image
}

GitHub Repo

最佳答案

当我尝试在 request.data 中手动添加 owner 字段时,我也面临同样的问题。

我的序列化类

fields = ("file", "name", "size", "owner")

在我看来

request.data['owner'] = request.user
file_serializer = FileSerializer(data=request.data)
    if file_serializer.is_valid():
        file_serializer.save()

在我的模型中

owner = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE)

关于django - "Incorrect type. Expected pk value, received list."错误 DRF React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66984710/

相关文章:

python - 完整性错误 : column slug is not unique

django - 如何检查自用户上次登录 Django 以来的新帖子

python /django : model object has no attribute 'prefetch_related'

Django 休息框架 : NoReverseMatch error even when pattern name has been defined

python - <django.db.models.fields.related.RelatedManager object at 0x7ff4e003d1d0> 不是 JSON 可序列化的

Django 选择查询时间差异

python - 在 Django 1.8 中创建基于登录和注销类的 View

python - Django - 如何创建文件并将其保存到模型的 FileField?

python - Django Rest框架,从其他模型数组创建模型

python - 如何为用户设置权限