Django Rest Framework serializer创建具有多个图像的对象 [英] Django Rest Framework serializer create object with multiple images
问题描述
我不知道如何序列化程序可以帮助我创建一个邮件对象和所有相关的图像同时(因为邮件和图像属于不同的模型,如下所述)
这是我的相关代码,抱歉,我从实际模型中删除了一些字段来帮助关注这个问题的情况。
models.py
类邮件(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 = '图像')
serializers.py
class MailImageSerializer(serializers.ModelSerializer):
class Meta:
model = MailImage
class MailSerializer(serializers.ModelSerializer):
#images = ??? //可以帮忙吗?
class Meta:
model = Mail
APIView
类SentMailView(APIView):
permission_classes =()
parser_classes =(FileUploadParser,)
def post ,request,format = None)
data = {
'images':request.data ['images'],
'title':request.data ['title'],
'content':request.data ['content'],
}
serializer = MailSerializer(data = data)
如果serializer.is_valid():
serializer。 save()
return响应({'success':True})
else:
返回响应({'success':False})
cURL测试
curl -X POST -H Content-Type:multipart / form-data-Ftitle = test-Fcontent = test-Fimages=@Testing.jpghttp://127.0.0.1:8000/api/sent-mail
Als这个cURL命令只发送一张照片,如果有人可以修改它,可以在一个cURL命令中发送一个邮件的多个图像。
感谢您的帮助。 / p>
class FileUploadView(views.APIView):
parser_classes =(FileUploadParser, )
def put(self,request,filename,format = None):
file_obj = request.data ['file']
#...
#做一些东西与上传的文件
#...
返回响应(状态= 204)
资料来源:
http:// www。 django-rest-framework.org/api-guide/parsers/#fileuploadparser
Suppose I have an application to deal with some mail messages with images.
I am not sure how serializer can help me to create an mail object and all related images at the same time (because mail and images belong to different model as mentioned below)
Here are my related codes, sorry that I removed some fields from my actual model to help focus on this question's situation.
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')
serializers.py
class MailImageSerializer(serializers.ModelSerializer):
class Meta:
model = MailImage
class MailSerializer(serializers.ModelSerializer):
# images = ??? //Can any one help on this?
class Meta:
model = Mail
APIView
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 Testing
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
Also this cURL command only send one picture, it would be appreciate if anyone can revise it to send multiple images for an mail in ONE cURL command.
Thanks for helping.
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)
Source: http://www.django-rest-framework.org/api-guide/parsers/#fileuploadparser
这篇关于Django Rest Framework serializer创建具有多个图像的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!