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

Foi útil?

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()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top