Python Django Rest框架序列化程序创建具有多个映像的对象
假设我有一个应用程序来处理一些带有图像的邮件消息 我不确定序列化程序如何帮助我同时创建邮件对象和所有相关图像(因为邮件和图像属于下面提到的不同模型) 这是我的相关代码,很抱歉,我从实际模型中删除了一些字段,以帮助关注这个问题的情况 models.pyPython 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
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的外键。如果设置正确,则邮件对象可以同时提供所有相关图像。谢谢回复。如果邮件应该有图像外键,如何使每封邮件可以有多个图像?如果是多对多字段,如何确保每个图像属于一封电子邮件?如何同时上载多个文件和邮件?