객체를 저장하는 동안 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!