Как назначить локальный файл в FileField в Django?

Я пытался назначить файл с моего диска на FileField, но у меня есть эта ошибка:

AttributeError: у объекта' str 'нет атрибута' open '

Мой код на Python:

pdfImage = FileSaver()
pdfImage.myfile.save('new', open('mytest.pdf').read())

и мой models.py

class FileSaver(models.Model):

    myfile = models.FileField(upload_to="files/")

    class Meta:
        managed=False

Заранее благодарю за помощь

30
задан Leodom 17 August 2010 в 10:48
поделиться

1 ответ

Django использует собственный тип файла (с несколько расширенными функциональными возможностями). В любом случае тип файла Django работает как декоратор , поэтому вы можете просто обернуть его вокруг существующих файловых объектов, чтобы удовлетворить потребности Django API.

from django.core.files import File

local_file = open('mytest.pdf')
djangofile = File(local_file)
pdfImage.myfile.save('new', djangofile)
local_file.close()

Конечно, вы можете украсить файл на лету, написав следующее (на одну строку меньше):

pdfImage.myfile.save('new', File(local_file))
40
ответ дан 28 November 2019 в 00:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: