2011-12-16 2 views
3

100 만 명의 사용자가있는 사이트가 있으며 모두 하나 이상의 프로필 이미지 (어쩌면 그 이상)를 가지고 있습니다.Django ImageField : upload_to 매개 변수를 self.id에 종속시키는 방법?

확신 할 수는 없지만 한 폴더에 모든 이미지를 저장하는 것이 매우 쉽지는 않습니다 (속도면에서 볼 때 폴더와 이미지 사이에 하나의 이미지를 찾으려면 시간이 필요하기 때문입니다). 거기에 무엇이든 찾아내는 더 많은 시간).

따라서 변형 된 이미지는 서로 다른 폴더에 저장할 수 있습니다 (중첩 된 폴더가 거의없는 경우에도).

예 : id가 1 ~ 1000 인 사용자는 폴더 1에 이미지를 저장하고, ID가 1001-2000 인 사용자는 폴더 2에 이미지를 저장합니다.

upload_to ImageField의 매개 변수는 동적이어야합니다 (사용자 ID 또는 다른 단어 self.id에 따라 달라야 함).

동적으로 만들 수있는 방법이 있습니까? 아니면이 시나리오를 구현하는 몇 가지 적절한 방법이 있습니까?

미리 감사드립니다.

답변

1

당신은 upload_to 매개 변수로 함수를 정의 할 수 있습니다 ... 귀하의 경우 :이 도움이

def upload_to_by_id(instance, filename): 
    if instance.id: 
     # you already have an id (updating a model with a new file) 
     folder = str(self.id/1000 +1) 
    else: 
     # maybe you still don't have an id!! this can happen a lot... :/ 
     folder = 'tmp' 

    return '%s/%s' % (folder, filename) 

희망을!

+0

어디에서이 기능을 사용할 수 있습니까? 모델 클래스 아래입니까 아니면 모델 클래스와 별도입니까? – MiniGunnR

관련 문제