본문 바로가기
파이썬

파이썬 모델에서 delete ()를 재정의하고 관련 삭제와 함께 작동하도록하려면 어떻게해야합니까?

by º기록 2021. 1. 24.
반응형

some_widget_instance.delete ()를 사용하여 위젯을 삭제하기 때문에 문제가 있습니다. 또한 재정의 delete () 메서드가있는 WidgetFile이라는 모델이 있으므로 WidgetFile이 삭제 될 때 하드 드라이브에서 파일을 삭제할 수 있습니다. 내가 가진 문제는 위젯을 삭제하면 다음과 같은 WidgetFiles가 있다는 것입니다.

class WidgetFile(models.Model):

    widget = models.ForeignKey(Widget)

글쎄, 위젯을 삭제하면 WidgetFiles가 삭제되지만 delete () 메서드가 트리거되지 않고 추가 하드 드라이브 작업을 수행합니다. 어떤 도움이라도 대단히 감사합니다.

 

해결 방법

 

나는 그것을 알아. 저는이 위젯 모델에 이것을 넣었습니다.

def delete(self):
    files = WidgetFile.objects.filter(widget=self)
    if files:
        for file in files:
            file.delete()
    super(Widget, self).delete()

이로 인해 각 관련 개체에서 필요한 delete () 메서드가 트리거되어 사용자 지정 파일 삭제 코드가 트리거되었습니다. 예, 데이터베이스 비용이 더 많이 들지만 어쨌든 하드 드라이브에서 파일을 삭제하려고 할 때 db를 몇 번 더 치는 것은 그렇게 큰 비용이 아닙니다.

 

참조 페이지 https://stackoverflow.com/questions/1534986

 

 

반응형

댓글