Changer de casse (haut / bas) lors de l'ajout de données via le site d'administration de Django

StackOverflow https://stackoverflow.com/questions/825955

  •  05-07-2019
  •  | 
  •  

Question

Je suis en train de configurer le site d'administration de mon nouveau projet, et j'ai un petit doute sur la marche à suivre pour cliquer sur "Enregistrer" lors de l'ajout de données via le site d'administration: tout est converti en majuscule ...

Modifier: OK, je connais la propriété .upper, et j’ai fait une vue. Je saurais le faire, mais je me demande s’il existe une propriété disponible pour la configuration du champ sur le site d’administration: P

Était-ce utile?

La solution

Si vous souhaitez uniquement convertir les éléments en majuscules lors de l'enregistrement dans la section admin, vous souhaiterez créer un formulaire avec validation personnalisée pour modifier la casse:

class MyArticleAdminForm(forms.ModelForm):
    class Meta:
        model = Article
    def clean_name(self):
        return self.cleaned_data["name"].upper()

Si votre objectif est de toujours avoir la valeur en majuscule, vous devriez alors remplacer la sauvegarde dans le champ de modèle:

class Blog(models.Model):
    name = models.CharField(max_length=100)
    def save(self, force_insert=False, force_update=False):
        self.name = self.name.upper()
        super(Blog, self).save(force_insert, force_update)

Autres conseils

Un exemple mis à jour dans la documentation suggère d'utiliser args, kwargs pour passer en tant que:

  

Django étendra de temps en temps les capacités des logiciels intégrés.   méthodes de modèle, ajout de nouveaux arguments. Si vous utilisez * args, ** kwargs dans   vos définitions de méthode, vous êtes assuré que votre code sera   prend automatiquement en charge ces arguments lorsqu'ils sont ajoutés.

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def save(self, *args, **kwargs):
        do_something()
        super(Blog, self).save( *args, **kwargs) # Call the "real" save() method.
        do_something_else()

vous devez annuler la sauvegarde ( ) . Un exemple tiré de la documentation:

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def save(self, force_insert=False, force_update=False):
        do_something()
        super(Blog, self).save(force_insert, force_update) # Call the "real" save() method.
        do_something_else()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top