2011-02-16 3 views
1

내가 뭘 잘못하고 있는지 잘 모르겠습니다. 그러나 업로드 된 파일과 관련된 캐시는 항목이 삭제 될 때 삭제되지 않습니다.sorl-thumbnail 항목을 삭제할 때 상위 파일이나 캐시를 삭제하지 않음

나는 사진 모델에서 속성 모델까지 FK로 속성 모델의 인라인 모델을 가지고 있습니다. 나는 'sorl.thumbnail import ImageField'를 사용하여 기본 Django models.ImageField를 대체합니다.

장고 관리에서 사진의 항목을 삭제하면 해당 항목이 삭제되지만 해당 항목의 파일은 삭제되지 않습니다. 장고의 runserver를 개발 용으로 사용하고 있으며 오류가 보이지 않습니다. 내가 읽은 것으로부터, 항목이 삭제되면 이들 파일을 삭제해야하며, 아직 참조가 없다면 삭제해야합니다. 내가 아직보고있는 유일한 참조는 thumbnail_kvstore 테이블에 있습니다.

내가 누락 된 부분에 대해 의견이있는 사람이 있습니까?

답변

1

sorl.thumbnail에서 ImageFieldrelease notes of django 1.2.5에서 장고의 FileField

의 확장해야한다 : 이전 장고 버전의

하는 FileField와 포함 된 모델 인스턴스가 삭제 된, 및 FileField는 자체에 그것을했다 또한 백엔드 저장소에서 파일을 삭제하십시오. 이로 인해 롤백 트랜잭션과 같은 파일을 참조하는 다른 모델의 필드를 포함하여 잠재적으로 심각한 데이터 손실 시나리오가 발생했습니다. Django 1.2.5에서는 FileField가 백엔드 저장소에서 파일을 삭제하지 않습니다. 분리 된 파일을 정리해야하는 경우 직접 처리해야합니다 (예 : 수동으로 실행하거나 cron 등을 통해 주기적으로 실행할 수있는 맞춤 관리 명령 사용).

+0

sorl의 ImageField에 따르면, FileField의 확장입니다. 그러나 파일을 삭제해야한다고 명시된 delete_file 메소드가 정의되어 있습니다. 문제는 그것이 자신의 것으로 이것을 부르는 것 같지 않다는 것입니다. 아마 당신이 방금 지적한 바 때문에. 그래서이 방법을 사용할 수 있습니까? 그렇다면, 그것을 사용하는 가장 좋은 방법은 무엇입니까? – bmeyer71

+0

삭제 속성을 사용하여 작업 솔루션을 얻을 수있었습니다. def delete (self) : 삭제 (self.photo) super (PropertyPhotos, self) .delete()' – bmeyer71

2

delete_file 메서드는 Django < v1.2.5에서만 호출됩니다. sorl.thumbnail.ImageField 파일 미리보기 및 키 값을 저장 참조를 제거하는 가장 좋은 방법은 (sorl 축소판에서 사용) sorl.thumbnail.delete 기능을 사용하는 것입니다 : 당신이 새로운 하나를 사용하여 이미지를 교체 할 때 내가 장고 - filebrowser의 문제가 있고,

0

sorl.thumbnail.delete(self.photo) 캐시 된 파일이 업데이트되지 않았습니다. 그래서 제 경우에는 sorl-thumbnail에 대한 문제가 아니라 django-filebrowser에 관한 문제였습니다. sorl은 파일의 경로가 변경 될 때만 축소판을 다시 그립니다. 이 문제를 해결하기 위해 파일 브라우저 FILEBROWSER_OVERWRITE_EXISTING 설정을 False로 설정했습니다.

FILEBROWSER_OVERWRITE_EXISTING = False 

이렇게하면 django-filebrowser를 사용하지 않는 사람이 문제를 디버그하는 데 도움이 될 수 있습니다. 그러나 django-filebrowser의 경우 이것은 갈 길입니다. 건배.

관련 문제