Python Django——裁剪并保存model.Imagefield中的Imagefield

Python Django——裁剪并保存model.Imagefield中的Imagefield,python,django,django-models,pillow,Python,Django,Django Models,Pillow,我需要从表单中剪切解救的图像,并将其存储在model.ImageField中 我的模特 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.Im

我需要从表单中剪切解救的图像,并将其存储在model.ImageField中

我的模特

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')
我的观点

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之前的图像裁剪到模型的实例中

尝试以下操作:

将裁剪区域保存在媒体根目录中的某个位置(确保路径为绝对路径):

然后只需为图像字段设置图像名称并保存对象。这次路径应该是相对的,因为它将用于图像url(我假设您已经在为媒体文件提供服务):

注意:不要用前导大写字母命名对象变量,这是一种不好的做法(使用user而不是user)。只有类名应该以大写字母开头。此外,Python约定在变量名中使用下划线作为单词分隔符(使用new_image而不是newImage,使用write_form而不是writeFrom),而不是camel大小写,除了在类名中,这是ok

story.save(settings.MEDIA_ROOT + 'something.jpeg')
obj.image_field.name = '/media/something.jpeg'
obj.save()