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.
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