2013-09-28 2 views
4

다음은 Django 응용 프로그램의 모델입니다. 앱을 MyApp라고합니다. 아이디어는 모든 응용 프로그램이 MEDIA_ROOT 아래에 폴더를 가지고 있도록하는 것입니다.Django 모델에서 응용 프로그램 이름 가져 오기

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

곳에서 응용 프로그램의 이름을 얻고 하드 MyApp을 제거하는 방법이있다.

This도 비슷한 질문이지만 모델의 요청 개체에 액세스 할 수 없습니다.

답변

8

app_label 속성에 _meta 속성이 있습니다. 이 항목을 참조하십시오. stackoverflow question

+0

작동하지 않을 수 있습니다. 'upload_to = 'MyApp''을'upload_to ='MyModel._meta.app_label''으로 변경했을 때 더 이상 장고 쉘에 별표를 붙일 수 없었습니다. 'NameError : name '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'업로드 경로가 표시됩니다.

관련 문제