2013-09-28 38 views
4

以下是Django應用程序的模型。讓該應用程序被稱爲MyApp。這個想法是爲每個應用程序在MEDIA_ROOT下擁有它的文件夾。在Django模型中獲取應用程序名稱

class MyModel(models.Model): 
    .... #Other fields 
    datoteka = models.FileField(upload_to = 'MyApp',null = True) 

有沒有辦法從某處獲取應用程序的名稱,並刪除硬編碼MyApp

This是一個類似的問題,但我無法訪問模型中的請求對象。

回答

8

_meta屬性中有一個屬性app_label。請看這stackoverflow question

+0

無法正常工作。 當我將'upload_to ='MyApp''更改爲'upload_to ='MyModel._meta.app_label''時,我無法再使用Django shell。出現錯誤:NameError:名稱'MyModel'未定義。 – TheMeaningfulEngineer

+0

@Alan,請嘗試contentType解決方案。它應該工作得很好,我會明白爲什麼它不是。 –

+0

嘗試自我。而不是應用程序名稱 – karthikr

2
from os import path 

def _get_upload_to(instance, filename): 
    return path.join(instance._meta.app_label, 'subdir', filename) 

class MyModel(models.Model): 
    .... 
    datoteka = models.FileField(upload_to=_get_upload_to, ...) 

將導致'MyApp/subdir'上傳路徑。

相關問題