Modifica del caso (superiore / inferiore) durante l'aggiunta di dati tramite il sito di amministrazione di Django

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

  •  05-07-2019
  •  | 
  •  

Domanda

Sto configurando il sito di amministrazione del mio nuovo progetto e ho un piccolo dubbio su come devo fare, premendo "Salva" quando aggiungo dati attraverso il sito di amministrazione, tutto viene convertito in maiuscolo ...

Modifica: Ok, conosco la proprietà .upper e II ha fatto una vista, vorrei sapere come farlo, ma mi chiedo se ci sono proprietà disponibili per la configurazione del campo sul sito di amministrazione: P

È stato utile?

Soluzione

Se il tuo obiettivo è convertire le cose solo in maiuscolo durante il salvataggio nella sezione admin, ti consigliamo di crea un modulo con validazione personalizzata per modificare il caso:

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

Se il tuo obiettivo è avere sempre il valore in maiuscolo, allora dovresti ignora il salvataggio nel campo del modello:

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)

Altri suggerimenti

L'esempio aggiornato dalla documentazione suggerisce di usare args, kwargs per passare attraverso:

  

Django estenderà di volta in volta le funzionalità del built-in   metodi del modello, aggiungendo nuovi argomenti. Se usi * args, ** kwargs in   le definizioni del metodo, hai la garanzia che il tuo codice lo farà   supporta automaticamente tali argomenti quando vengono aggiunti.

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()

devi ignorare il salvataggio ( ) . Un esempio dalla documentazione:

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()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top