Laden Sie eine Datei von der Django-Shell hoch

Ich muss einige Daten aus einer Excel-Datei und einem Ordner mit Bildern importieren. Jede Zeile im Excel beschreibt jeden Eintrag und enthält eine Liste der Dateinamen im Ordner (Fotos, die sich auf den Eintrag beziehen).

Ich habe ein Skript erstellt, das jeden Eintrag in der Datenbank erstellt und durch die Django-Shell speichert, aber ich habe keine Ahnung, wie ich eine InMemoryUploadedFile zum Speichern mit dem Modell instanziieren soll.

In Django 1.0 hatte ich diese kleine Klasse, mit der ich tun konnte, was ich brauchte, aber mit Änderungen in Django 1.1 funktioniert es nicht mehr.

class ImportFile(file):
    def __init__(self, *args, **kwargs):
        super(ImportFile, self).__init__(*args, **kwargs)
        self._file = self
        self.size = os.path.getsize(self.name)

    def __len__(self):
        return self.size

    def chunks(self, chunk_size=None):
        self._file.seek(0)
        yield self.read()

Ich habe diese Klasse mit diesem Codeteil verwendet, um Bilder zu laden und sie mit der Modellinstanz zu speichern.

for photo in photos:
    f = ImportFile(os.path.join(IMPORT_DIR, 'fotos', photo), 'r')
    p = Photo(name=f.name, image=f, parent=supply.supply_ptr)
    name = str(uuid1()) + os.path.splitext(f.name)[1]
    p.image.save(name, f)
    p.save()

Die Frage ist, wie erstelle ich eine InMemoryUploadedFile oder TemporaryUploadedFile aus einer Datei in Python oder einer anderen Sache, die in diesem Zusammenhang funktionieren könnte.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage