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 :
<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): # Logic for image rescaling super(Model, self).save(*args, **kwargs)</code>
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ée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!