¿Cómo asignar un archivo local al campo de archivos en Django?


Estaba tratando de asignar un archivo de mi disco al campo de archivos, pero tengo este error:

AttributeError: el objeto' str 'no tiene atributo'open'

Mi código python:

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

Y mi models.py

class FileSaver(models.Model):

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

    class Meta:
        managed=False

Gracias de antemano por su ayuda

Author: Leodom, 2010-08-17

1 answers

Django usa su propio tipo de archivo (con una funcionalidad mejorada de sightly). De todos modos, el tipo de archivo de Django funciona como un decorador , por lo que simplemente puede envolverlo alrededor de objetos de archivo existentes para satisfacer las necesidades de la API de Django.

from django.core.files import File

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

Por supuesto, puede decorar el archivo sobre la marcha escribiendo lo siguiente (una línea menos):

pdfImage.myfile.save('new', File(local_file))`.
 34
Author: tux21b,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-22 20:15:56