2012-07-12 2 views
11

ImageFieldPicture 모델이 있습니다. Picture의 인스턴스를 삭제할 때 ImageField에 설정된 파일은 삭제되지 않습니다.ImageField 필드가있는 객체를 삭제하면 이미지 파일이 삭제되지 않습니다.

버그입니까? 내가 어떻게 해? FileField들과 ImageField들과 관련된 파일의

+0

무엇합니까처럼보기보기? – rh0dium

+0

나는보기가 없다. – jul

+0

[데이터베이스/모델에서 객체를 제거하면 Django Admin에서 파일을 삭제하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/5372934/how-do-i-get-django-admin -to-delete-files-i-remove-object-from-the-datab) –

답변

25

삭제 의도적으로 장고 1.3에서 제거 했다. ticket #6456을 참조하십시오. Django는 요청이 잘못되어 데이터 손상을 막기 위해 트랜잭션을 광범위하게 사용합니다. 삭제 트랜잭션이 롤백 된 경우, 파일 시스템에서 파일을 삭제 한 후 존재하지 않는 파일을 가리키는 레코드가 생깁니다. 자동 삭제를 요청하는 모든 티켓은 간략하게 "수정되지 않음"으로 표시되므로 변경되지 않습니다.

해결 방법은 this previous StackOverflow question을 참조하십시오.

0

가정?

class Picture(models.Model): 
    image = ImageField(blank=True, null=True, upload_to="pics") 

    def delete(self, *args, **kwargs): 
     self.image.delete() 
     super(Picture, self).delete(*args, **kwargs) 

는 그런 다음 삭제 생성 및 삭제이 ..

image = "./image.jpg" 
picture = Picture.objects.create(image=File(open(image, "r")) 
picture.save() 

을 수동으로 할 수 있습니다?

picture.delete()

HTH

+5

이 답변은 이미 꽤 오래되었지만 첫 번째 코드 블록의 5 번째 줄은'self.image.delete()' – Tim

+2

이어야합니다. 그리고'Picture.objects.filter (...). delete()'처럼 작동하지 않는 신호를 사용하는 것이 좋습니다. – Sassan