【发布时间】:2015-08-01 00:52:45
【问题描述】:
1) 我想用一个 API 调用创建多个模型实例,就像在这里问的那样:How do I create multiple model instances with Django Rest Framework? 我尝试了链接中命名的解决方案,但没有成功。
我正在尝试在一个 API 调用中上传多个文件。 结果:文件被上传(只有一次我覆盖了 perform_create)但只创建了一个实例(如果我发送两个文件,只有后者被创建为实例)。
我的代码:
class FileUploadSerializer(serializers.ModelSerializer):
def __init__(self, *args, **kwargs):
many = kwargs.pop('many', True)
super(FileUploadSerializer, self).__init__(many=many, *args, **kwargs)
class Meta:
model = FileUpload
read_only_fields = ('created', 'datafile', 'owner')
class FileUploadViewSet(viewsets.ModelViewSet):
queryset = FileUpload.objects.all()
serializer_class = FileUploadSerializer
parser_classes = (MultiPartParser, FormParser, )
def perform_create(self, serializer):
file_list = self.request.data.getlist('file')
for item in file_list:
serializer.save(file=item)
我在正确的轨道上吗?文档http://www.django-rest-framework.org/api-guide/serializers/#dealing-with-multiple-objects 提到:“要序列化查询集或对象列表而不是单个对象实例,您应该在实例化序列化程序时传递 many=True 标志。然后您可以传递要序列化的查询集或对象列表。 " => 应该可以的……
2) 使用 django-rest-framework-bulk 会更好吗? https://github.com/miki725/django-rest-framework-bulk
【问题讨论】:
标签: django django-models django-views django-rest-framework