2011-10-27 2 views
1

django-filebrowser 및 FileBrowserField을 사용하여 directory 매개 변수를 모델 자체의 키를 기반으로 할당하려고합니다. 따라서 블로그 예제를 사용하여 여러 게시물에 대해 사진을 저장하는 경우 사진은 블로그 ID 이름의 디렉토리에 저장됩니다. MEDIA_ROOT가 있다면 그래서 /some/path/to/media/filebrowser_files/ 나는 동적으로 directory 있었던 파라미터 나는 다음을 닮은 뭔가를 시도이 시점에서 MEDIA_ROOT+str(model_pk)Django filebrowser, FileBrowserField의 모델 별 디렉토리 매개 변수

로 할당 할, 그러나 현재 개체의 ID를 얻는 방법을 이해하지 않습니다. ("No exception supplied"로 DoesNotExist 예외) self.page를 사용하려는 시도에 오류가 있음을 알고 있지만 올바르게 수행하는 방법을 모르겠습니다. 누군가 내 논리에 결함이 있으며이를 해결하기 위해 할 수있는 일에 대해 통찰력을 줄 수 있습니까? 감사합니다.

class PageImage(models.Model): 
    page = models.ForeignKey(Page) 
    page_photo = FileBrowseField("Image", max_length=200, blank=True, null=True) 
    def __init__(self, *args, **kwargs): 
     super(PageImage, self).__init__(*args, **kwargs) 
     path = settings.MEDIA_ROOT+'pages/unfiled/' 
     if self.page: 
      path = settings.MEDIA_ROOT+'pages/'+str(self.page)+'/' 
     if not os.path.exists(path): 
      os.makedirs(path) 
     self._meta.get_field_by_name("page_photo")[0].directory = path 

답변

1

나는 당신의 코드를 자세히 보지 않았다. Model 인스턴스를 초기화하고 self.page가 데이터베이스의 페이지로 설정되지 않았으므로 self.page가 작동하지 않습니다. 대신 다음을 시도하십시오.

PageImage의 필드에 페이지를 지정한 후에 만 ​​원하는 것을하는 것이 좋습니다.

+0

답변 해 주셔서 감사합니다. 페이지 모델에는 특별한 것이 없습니다. 문제는 내가 슈퍼 init 및 print (str (self.page)) 호출을 제외한 모든 것을 제거 할 수 있다고 믿는자가 사용하는 것입니다. 거기에 예외가 제공되지 않는다고 말하는 DoesNotExist 예외가 있습니다. 나에 의해 pk의 무시. – wilbbe01

+0

업데이트 된 답변 주셔서 감사합니다. 적어도 내가하려고했던 일을하는 것을 얻지 만, 나는 내가 어떻게하고 있는지 다시 생각할 필요가 있다고 생각한다. '디렉토리'설정은 이미지가 이미 업로드 되었기 때문에 저장 작업에별로 도움이되지 않습니다 ... 그래서 업로드 된 이미지를 저장하는 대신 어디에서나 옮길 필요가 있습니다. 파일 관리 ... 재미. 다시 한번 감사드립니다. – wilbbe01

관련 문제