"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment remplacer la méthode de sauvegarde de Django pour des scénarios de modèle spécifiques ?

Comment remplacer la méthode de sauvegarde de Django pour des scénarios de modèle spécifiques ?

Publié le 2024-11-07
Parcourir:367

How to Override Django Save Method for Specific Model Scenarios?

Django : remplacement de la méthode de sauvegarde pour des scénarios de modèle spécifiques

Dans les situations où la méthode de sauvegarde d'un modèle Django doit être modifiée en fonction de certains critères, tels que déterminer si une image a été mise à jour ou si seule la description a été modifiée, une approche personnalisée peut être utilisée.

Une technique consiste à utiliser une propriété et un indicateur :

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)

Cette approche garantit que la logique de redimensionnement de l'image n'est déclenchée que lorsque l'indicateur '_image_changed' est défini sur True, indiquant que l'image a été modifié.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729584019. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3