Alterando caso (superior / inferior) em adição dados através do sítio do admin
Pergunta
Estou configurar o site de administração do meu novo projeto, e eu tenho uma pequena dúvida sobre como devo fazer para, em bater 'Save' ao adicionar dados através do site admin, tudo é convertido em maiúsculas ...
Edit: Ok eu sei que a propriedade .upper e II fez um ponto de vista, eu gostaria de saber como fazê-lo, mas eu estou querendo saber se há alguma propriedade disponível para a configuração do campo no site admin: P
Solução
Se seu objetivo é apenas para ter as coisas convertidos em maiúsculas ao salvar na seção admin, você vai querer criar um formulário com o costume de validação para fazer a mudança caso:
class MyArticleAdminForm(forms.ModelForm):
class Meta:
model = Article
def clean_name(self):
return self.cleaned_data["name"].upper()
Se o seu objetivo é sempre ter o valor em letras maiúsculas, então você deve override salvar no campo de modelo:
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)
Outras dicas
exemplo Atualizado de documentação sugere o uso de argumentos, kwargs de passar por:
Django irá, de tempos em tempos, estender as capacidades do built-in métodos modelo, adicionando novos argumentos. Se você usar o args *, kwargs ** em suas definições de método, você está garantido que seu código será apoiar automaticamente esses argumentos quando eles são adicionados.
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()
override save ( ) . Um exemplo da documentação:
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()