Python Django Rest框架序列化程序创建具有多个映像的对象

Python Django Rest框架序列化程序创建具有多个映像的对象,python,django,python-2.7,django-rest-framework,django-1.7,Python,Django,Python 2.7,Django Rest Framework,Django 1.7,假设我有一个应用程序来处理一些带有图像的邮件消息 我不确定序列化程序如何帮助我同时创建邮件对象和所有相关图像(因为邮件和图像属于下面提到的不同模型) 这是我的相关代码,很抱歉,我从实际模型中删除了一些字段,以帮助关注这个问题的情况 models.py class Mail(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(max_length=255) conte

假设我有一个应用程序来处理一些带有图像的邮件消息

我不确定序列化程序如何帮助我同时创建邮件对象和所有相关图像(因为邮件和图像属于下面提到的不同模型)

这是我的相关代码,很抱歉,我从实际模型中删除了一些字段,以帮助关注这个问题的情况

models.py

class Mail(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=255)
    content = models.CharField(max_length=255)

class MailImage(models.Model):
    image = models.ImageField(upload_to=get_file_path, blank=True, null=True)
    mail = models.ForeignKey(Mail, related_name='images')
序列化程序.py

class MailImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = MailImage

class MailSerializer(serializers.ModelSerializer):
    # images = ??? //Can any one help on this?
    class Meta:
        model = Mail
阿皮维尤

class SentMailView(APIView):
    permission_classes = ()
    parser_classes = (FileUploadParser,)
    def post(self, request, format=None):
        data = {
            'images': request.data['images'],
            'title': request.data['title'],
            'content': request.data['content'],
        }
        serializer = MailSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return Response({'success': True})
        else:
            return Response({'success': False})
卷曲试验

curl -X POST -H "Content-Type:multipart/form-data" -F "title=test" -F "content=test" -F "images=@Testing.jpg" http://127.0.0.1:8000/api/sent-mail
而且这个cURL命令只发送一张图片,如果有人可以修改它,在一个cURL命令中发送多张图片,那将非常感激

谢谢你的帮助

class FileUploadView(views.APIView):
    parser_classes = (FileUploadParser,)

    def put(self, request, filename, format=None):
        file_obj = request.data['file']
        # ...
        # do some stuff with uploaded file
        # ...
        return Response(status=204)
资料来源:

离开答案,我认为您的模型存在设计问题。邮件应该有图像,而不是图像应该有邮件。所以邮件应该有一个MailImage的外键,而不是MailImage应该有一个Mail的外键。如果设置正确,则邮件对象可以同时提供所有相关图像。谢谢回复。如果邮件应该有图像外键,如何使每封邮件可以有多个图像?如果是多对多字段,如何确保每个图像属于一封电子邮件?如何同时上载多个文件和邮件?