2012-07-13 5 views
6

Wie kann ich den Link eines FileField bekommen? Ich versuchte, das url Feld, aber es gibt den Dateipfad:Wie bekomme ich den Link der Datei in einem FileField?

In [7]: myobject.myfilefield.path 
Out[7]: u'/home/xxxx/media/files/reference/1342188147.zip' 

In [8]: myobject.myfilefield.url 
Out[8]: u'/home/xxxx/media/files/reference/1342188147.zip' 

Ich erwartete http://<mydomain>/media/files/reference/1342188147.zip

zu bekommen Wie kann ich das? Muss ich die Zeichenfolge manuell erstellen?

EDIT

Meine MEDIA_URL nicht gesetzt war, aber ich kann immer noch nicht daran arbeiten:

settings.py

MEDIA_ROOT = '/home/xxx/media/' 
MEDIA_URL = 'http://xxx.com/media/' 

models.py

class Archive(models.Model): 

    #... 
    file = models.FileField(upload_to="files") 

in der Schale

a = Archive() 
a.file = "/some/path/to/file.txt" 
a.save() 

Dann bekomme ich für a.path:

"/some/path/to/file.txt" 

und für a.url:

"http://xxx.com/media/some/path/to/file.txt" 

Wenn programmatisch getan, a.file = "/some/path/to/file.txt", wird die Datei in MEDIA_ROOT nicht hochgeladen. Wie kann ich eine Datei in das Verzeichnis hochladen, das durch upload_to definiert ist, d. H. In meinem Fall /home/xxx/media/file.txt?

Antwort

0

Die Ausgabe auf Ihrer Einstellungsdatei basiert, haben Sie einen Blick hier für ein Verständnis auf Static in Entwicklung und/oder Produktion dienen:

Confusion in Django admin, static and media files

+0

oops, wurde MEDIA_URL nicht gesetzt. – jul

+0

Aber ich kann immer noch nicht bekommen, was ich will. Siehe meine Bearbeitung. – jul

0

Ich vermute, Sie haben das Feld wie folgt definiert:

picture = models.ImageField(upload_to="/home/xxx/media/files/reference") 

mit anderen Worten ist es möglich, dass Sie einen absoluten Pfad für die upload_path-Eigenschaft des Feldes definiert haben?

Probieren Sie etwas wie

from django.conf import settings 
picture = models.ImageField(upload_to=settings.MEDIA_ROOT + "files/reference") 
Verwandte Themen