Surcharger la méthode save

Exclusif Premium

Débloquez votre potentiel ! ✨

Cette session fait partie de notre programme Premium exclusif

+100h de formations exclusives
+180 exercices de code avancés
+100h de mentorats en réécriture
20 projets guidés pas à pas
Mentorats groupés hebdomadaires
Support individuel avec nos mentors

Prêt à passer au niveau supérieur ?

Découvrez tous les avantages Premium et transformez votre apprentissage dès aujourd'hui!

Inscris-toi

(c'est gratuit !)

Un compte est nécessaire pour participer aux discussions.

Créer un compte

Toutes les questions

Gabriel Trouvé

18 janvier 2023

Résolue
2 réponses

Surcharger la méthode save Django

Re,Il y a peut-être une chose que j'ai mal comprise.La fonction super est utilisée après ma condition.Mais est-ce que j'aurais pu coder ma condition après super() ?Car dans la formation de base Python on utilisait toujours super() en premier.Au passage, il faut avoir en paramètre args et kwargs.Args car on peut avoir plusieurs paramètres ? Et kwargs car on peut avoir une clé=valeur en paramètre ?Merci d'avancefrom django.db import models from django.utils.text import slugify # Create your models here. class BlogPost(models.Model): # pour CharField il faut absolument définir une longueur en param title = models.CharField(max_length=100) # pour transformer title en url on utilise un slug slug = models.SlugField(blank=True) # valeur par défaut en param published = models.BooleanField(default=False) # blank permet de spécifier que je peux laisser vide. Sinon obligé de renseigner date date = models.DateField(blank=True, null=True) content = models.TextField() description = models.TextField() # une info que je ne veux pas forcémment stocker dans ma BDD mais juste afficher ==> def publish_string(self): if self.published: return "L'article est publié" return "L'article est inaccessible" def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.title) super().save(*args, **kwargs)

Surcharger la méthode save

De la même façon qu'il est possible d'ajouter des méthodes ou des propriétés à un modèle, nous pouvons également surcharger les méthodes existantes des modèles Django.

Parmi ces méthodes, la méthode save est appelée lors de la sauvegarde d'un modèle dans la base de données.

On peut donc surcharger cette méthode pour rajouter des fonctionnalités personnalisées à chaque sauvegarde du modèle, par exemple pour rajouter automatiquement un slug si celui-ci n'est pas défini par l'utilisateur :

# blog/models.py
class BlogPost(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SLugField()
    published = models.BooleanField(default=False)
    date = models.DateField(blank=True, null=True)
    content = models.TextField()
    description = models.TextField()

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.title)

        super().save(*args, **kwargs)

Ce n'est pas fini...

Tu as complété % du parcours 🔥

Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.

Rechercher sur le site

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.