django 모델의 삭제 메소드 재정의

WBOY
풀어 주다: 2024-02-11 19:15:04
앞으로
1267명이 탐색했습니다.

重写 django 模型中的删除方法

질문 내용

객체를 저장하는 동안 save 메소드에서 print를 호출하는 페이지 모델이 있습니다. 그러나 개체가 삭제되면 인쇄가 실행되지 않으며 삭제 메서드가 호출되지 않는 것 같습니다. 그러면 기본 삭제 방법을 어떻게 재정의해야 합니까?

class Page(models.Model):
    image = models.ImageField()
    number = models.PositiveIntegerField(default=0, blank=True, null=True)
    chapter = models.ForeignKey(Chapter, on_delete=models.CASCADE)

    def get_upload_path(self, filename):
        work_slug = self.chapter.volume.work.slug
        translator_name = slugify(self.chapter.volume.translator)
        volume_number = self.chapter.volume.number
        chapter_number = self.chapter.number
        name, extension = filename.rsplit('.', 1)
        return f'media/{work_slug}/{translator_name}/volumes/volume-{volume_number}/chapters/chapter-{chapter_number}/page-{self.number}.{extension}'

    def save(self, *args, **kwargs):
        if not self.pk:
            last_page = self.chapter.page_set.last()
            if last_page:
                self.number = last_page.number + 1
        self.image.name = self.get_upload_path(self.image.name)
        self.image.storage = s3
        print(f"Saving Page with image: {self.image.name}")
        super().save(*args, **kwargs)

    def delete(self, *args, **kwargs):
        print(f"Deleting Page with image: {self.image.name}")

        image_name = self.image.name
        try:
            s3.delete(image_name)
            print(f"Successfully deleted from S3: {image_name}")
        except Exception as e:
            print(f"Error deleting from S3: {e}")

        super().delete(*args, **kwargs)
로그인 후 복사

정답


객체 삭제 시 모델의 delete 메소드를 호출하세요. 쿼리 세트를 삭제하려는 경우(예: django 관리자 목록 페이지에서) 모델의 쿼리 세트를 덮어써야 합니다.

으아아아

위 내용은 django 모델의 삭제 메소드 재정의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!