2012-07-13 31 views
6

làm cách nào tôi có thể nhận được liên kết của một FileField? Tôi đã thử các lĩnh vực url, nhưng nó mang lại cho các đường dẫn tập tin:Cách lấy liên kết của tệp trong một 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' 

Tôi đã chờ đợi để có được http://<mydomain>/media/files/reference/1342188147.zip

Làm thế nào tôi có thể nhận được điều đó không? Tôi có phải xây dựng chuỗi bằng tay không?

EDIT

MEDIA_URL của tôi không được thiết lập, nhưng tôi vẫn không thể lấy nó để làm việc:

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") 

trong vỏ

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

Sau đó, tôi nhận được cho a.path:

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

và cho a.url:

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

Khi thực hiện chương trình, a.file = "/some/path/to/file.txt", các tập tin được tải lên không MEDIA_ROOT. Làm cách nào để tải lên tệp trong thư mục được xác định bởi upload_to, tức là trong trường hợp của tôi /home/xxx/media/file.txt?

Trả lời

0

Kết quả được dựa trên tập tin cài đặt, có một cái nhìn vào đây để có sự hiểu biết về phục vụ staticfiles trong việc phát triển và/hoặc sản xuất:

Confusion in Django admin, static and media files

+0

oops, MEDIA_URL chưa được đặt. – jul

+0

Nhưng tôi vẫn không thể có được những gì tôi muốn. cf chỉnh sửa của tôi. – jul

0

Tôi đoán bạn có lĩnh vực được xác định như sau:

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

nói cách khác là có thể bạn đã xác định đường dẫn tuyệt đối cho thuộc tính upload_path của trường?

Hãy thử một cái gì đó giống như

from django.conf import settings 
picture = models.ImageField(upload_to=settings.MEDIA_ROOT + "files/reference") 
Các vấn đề liên quan