“类型不正确预期的 pk 值,收到的列表”错误 DRF 反应 序列化器

问题描述

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

问题是

当我将列表放入请求中时显示错误:“类型不正确。预期的 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','categories': '1','image': image
}

GitHub Repo

解决方法

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

我的序列化器类

connect.execute("CREATE DATABASE {}".format(db));

在我看来

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

在我的模型中

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...