2016-10-25 2 views
1

Ich habe ein Modell, das eine EXE-Datei speichert. Ich möchte diese Datei aus dem Modell entfernen und sie in einen bestimmten Ordner einfügen, ohne das Modell zu ändern. Irgendwelche Ideen?Wie verschiebe ich in Django eine Datei von einem Modell in ein Verzeichnis auf der Festplatte?

Das Modell ist so etwas wie dieses:

class Program(models.Model): 
    program_name = models.CharField(...) 
    program_version = models.CharField(...) 
    program_installer = models.FileField(...) 

Ich brauche das Installationsprogramm aus dem Modell extrahieren zu können, trennen jede Verbindung mit dem Modell hat sich und setzen Sie dann eine neue Datei im Modell (während der ältere Installateur an einem separaten Ort bleibt).

Antwort

2

FileField standardmäßig Verwendung django.core.files.storage.FileSystemStorage, so enthält es eine Zeichenfolge mit Dateinamen (Pfad zu einer Datei), nicht eine Datei selbst. Verwenden Sie einfach diesen Dateinamen (Pfad), um eine Datei an das gewünschte Ziel zu kopieren.

Von hier https://docs.djangoproject.com/en/dev/topics/files/#using-files-in-models:

Wenn Sie ein Filefield oder Imagefield verwenden, bietet Django eine Reihe von APIs Sie mit dieser Datei umgehen können.

Betrachten Sie das folgende Modell, ein Imagefield mit einem Foto zu speichern:

from django.db import models 

class Car(models.Model): 
    name = models.CharField(max_length=255) 
    price = models.DecimalField(max_digits=5, decimal_places=2) 
    photo = models.ImageField(upload_to='cars') 

Jede Auto Instanz wird ein Foto-Attribut hat, die Sie verwenden können, an den Details des beigefügten Fotos zu bekommen:

>>> car = Car.objects.get(name="57 Chevy") 
>>> car.photo 
<ImageFieldFile: chevy.jpg> 
>>> car.photo.name 
'cars/chevy.jpg' 
>>> car.photo.path 
'/media/cars/chevy.jpg' 
>>> car.photo.url 
'http://media.example.com/cars/chevy.jpg' 
+0

Danke. Das war meine erste Idee, aber ich dachte, es gäbe einen besseren Weg. –

Verwandte Themen