>백엔드 개발 >파이썬 튜토리얼 >선택적 모델 업데이트를 위해 Django의 저장 방법을 재정의하는 방법은 무엇입니까?

선택적 모델 업데이트를 위해 Django의 저장 방법을 재정의하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-22 16:34:031033검색

How to Override Django's Save Method for Selective Model Updating?

경우에 따라 모델에 대해서만 Django 재정의 저장

문제:

저장할 때 Django 모델에서는 새 이미지가 추가되면 이미지 크기를 조정해야 합니다. 그러나 모델 설명만 업데이트된 경우 크기 조정을 건너뛰고 싶습니다.

해결책:

이를 달성하려면 setter 역할을 하는 사용자 정의 속성을 생성할 수 있습니다. 이미지 필드와 이미지가 변경되었는지 여부를 나타내는 플래그입니다.

<code class="python">class Model(model.Model):
    _image = models.ImageField(upload_to='folder')
    thumb = models.ImageField(upload_to='folder')
    description = models.CharField()

    def set_image(self, val):
        self._image = val
        self._image_changed = True

    def get_image(self):
        return self._image

    image = property(get_image, set_image)

    def save(self, *args, **kwargs):
        if getattr(self, '_image_changed', True):
            small = rescale_image(self.image, width=100, height=100)
            self.image_small = SimpleUploadedFile(name, small_pic)
        super(Model, self).save(*args, **kwargs)</code>

이 솔루션은 이미지가 변경될 때만 크기가 조정되고, 설명만 업데이트될 때는 크기 조정을 방지합니다. 또한 이 접근 방식은 ModelForm 및 contrib.admin과 같은 Django의 유사 자동 도구와의 호환성을 유지합니다.

위 내용은 선택적 모델 업데이트를 위해 Django의 저장 방법을 재정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.