Modifica del caso (superiore / inferiore) durante l'aggiunta di dati tramite il sito di amministrazione di Django
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
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()