34

我正在尝试通过 django shell 保存图像文件。

model.py的是:

class user(models.Model):
    name = models.CharField(max_length=20)
    pic = models.ImageField()

管理员和表单一切都很好,但我想使用 shell 保存图像:

就像是

>>> user1 = User(name='abc', pic="what to write here")
4

3 回答 3

64
from django.core.files import File

user1=User(name='abc')
user1.pic.save('abc.png', File(open('/tmp/pic.png', 'r')))

您最终会将图像abc.png复制upload_toImageField.

在这种情况下,该user1.pic.save方法还将保存user1实例。保存文档ImageField可以在这里找到https://docs.djangoproject.com/en/dev/ref/files/file/

于 2013-05-03T20:15:54.867 回答
31
from django.core.files import File
user1=User(name='abc')
user1.pic.save('abc.png', File(open('/tmp/pic.png', 'rb')))

请使用“rb”而不是“r”。如果您使用的是 python3.

于 2015-12-15T11:29:37.697 回答
1

对我有用的是:

django.core.files.uploadedfile import UploadedFile
user1=User(name='abc')
user1.pic.save('abc.png', UploadedFile(file=open('/tmp/pic.png', 'rb'), content_type='image/png'))
于 2021-10-09T18:55:28.373 回答