问题描述
尝试发布请求多对多关系时出错
问题是
当我将列表放入请求中时显示错误:“类型不正确。预期的 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
}
解决方法
当我尝试在 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()