"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como substituir o método Django Save para cenários de modelo específicos?

Como substituir o método Django Save para cenários de modelo específicos?

Publicado em 2024-11-07
Navegar:771

How to Override Django Save Method for Specific Model Scenarios?

Django: Substituindo o método save para cenários de modelo específicos

Em situações onde o método save de um modelo Django precisa ser modificado com base em certos critérios, como determinar se uma imagem foi atualizada ou apenas a descrição alterada, uma abordagem personalizada pode ser empregada.

Uma técnica envolve o uso de uma propriedade e um sinalizador:

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):
            # Logic for image rescaling
        super(Model, self).save(*args, **kwargs)

Esta abordagem garante que a lógica de redimensionamento da imagem só seja acionada quando o sinalizador '_image_changed' for definido como True, indicando que a imagem foi modificado.

Declaração de lançamento Este artigo foi reimpresso em: 1729584019 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3