Comment affecter un fichier local au FileField à Django?

j'ai essayé d'assigner un fichier de mon disque à la FileField, mais j'ai cette erreur:

AttributeError: 'str' object n'a pas d'attribut "ouvrir"

mon code python:

pdfImage = FileSaver()
pdfImage.myfile.save('new', open('mytest.pdf').read())
<!-Et mon models.py

class FileSaver(models.Model):

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

    class Meta:
        managed=False

je vous Remercie d'avance pour votre aide

23
demandé sur Leodom 2010-08-17 14:48:36

1 réponses

Django utilise son propre type de fichier (avec une fonctionnalité légèrement améliorée). Quoi qu'il en soit, le type de fichier de Django fonctionne comme un décorateur, de sorte que vous pouvez simplement l'enrouler autour des objets de fichier existants pour répondre aux besoins de L'API Django.

from django.core.files import File

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

vous pouvez bien sûr décorer le fichier à la volée en écrivant ce qui suit (une ligne de moins):

pdfImage.myfile.save('new', File(local_file))`.
34
répondu tux21b 2016-07-22 20:15:56