2017-07-31 95 views
0

当我运行从项目的根类壳我得到以下结果:Django Filefield路径取决于文件夹。奇怪的错误?

>>> from generations.models import * 
>>> Generation.objects.all().first().file.path 
'/Users/marijus/workspace/preeti/media/data/58/input/IRIS.csv' 

这是很好的,我想要的东西。

然而,当我运行shell或与其他目录,我得到以下结果Django的背景下任何其他脚本:前追加

─$ cd scripts 
╰─$ python ../manage.py shell 
>>> from generations.models import * 
>>> Generation.objects.all().first().file.path 
'/Users/marijus/workspace/preeti/scripts/media/data/58/input/IRIS.csv' 

通知脚本/媒体这将导致一个错误,当我尝试访问该文件来自脚本目录。

我的模型:

def get_upload_path(instance, filename): 
    return "media/data/%s/input/%s" % (instance.id, filename) 

class Generation(models.Model): 
    file = models.FileField(upload_to=get_upload_path, blank=True, null=True) 

这是某种错误的或者是的FileField的路径应该依赖于从我试图访问它的文件夹。

+0

你可以在设置中的媒体设置 – Exprator

回答

0

Django的FileStorageuses os.abspath获取文件位置。另一方面os.abspathcalls os.getcwd获取路径。这是导致路径相对于当前目录的原因,这在本地环境中很有用。

如果您想将其设置为某个绝对位置,您需要设置MEDIA_ROOT setting