我需要从表单中剪切获救的图像并将其存储在model.ImageField
中我的models.py
class Story(models.Model):
creator = models.ForeignKey(User_info)
storyid = models.AutoField(primary_key=True)
text = models.TextField()
title = models.CharField(max_length=255)
photo = models.ImageField(upload_to='story_picture')
我的views.py
from PIL import Image
from io import BytesIO
from django.core.files import File
def post(self, request, *args, **kwargs):
form = writeForm(request.POST, request.FILES)
print form
User = request.user
usuario = User_info.objects.get(user=User.id)
story = Story()
story.creator = usuario
story.text = request.POST['story']
story.title = request.POST['title']
newImage = Image.open(form.cleaned_data['photo'])
story.photo = newImage.crop((10,10,800,800))
story.save()
我需要在asosiarla之前将图像裁剪为模型的实例
答案 0 :(得分:1)
试试这个:
将裁剪区域保存在媒体根目录中的某个位置(确保路径是绝对路径):
story.save(settings.MEDIA_ROOT + 'something.jpeg')
然后只需为图像字段设置图像名称并保存对象。这次路径应该是相对的,因为它将用于图像URL(假设您已经在为媒体文件提供服务):
obj.image_field.name = '/media/something.jpeg'
obj.save()
P.S。:不要用大写字母命名对象变量,这是一种不好的做法(使用用户而不是用户)。只有类名应以大写字母开头。此外,Python约定是使用下划线作为变量名中的单词分隔符(使用new_image而不是newImage,write_form而不是writeFrom),而不是类似于驼峰的情况,除了在类名中,哪里好。