Cambio de caso (superior / inferior) al agregar datos a través del sitio de administración de Django

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

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy configurando el sitio de administración de mi nuevo proyecto, y tengo algunas dudas sobre cómo debería hacerlo, al hacer clic en "Guardar" al agregar datos a través del sitio de administración, todo se convierte a mayúsculas ...

Edit: Ok, conozco la propiedad .upper, e II hice una vista, sabría cómo hacerlo, pero me pregunto si hay alguna propiedad disponible para la configuración de campo en el sitio de administración: P

¿Fue útil?

Solución

Si su objetivo es convertir las cosas en mayúsculas al guardar en la sección de administración, querrá cree un formulario con validación personalizada para cambiar el caso:

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

Si su objetivo es tener siempre el valor en mayúsculas, debería anular guardar en el campo 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)

Otros consejos

El ejemplo actualizado de la documentación sugiere utilizar args, kwargs para pasar como:

  

Django extenderá las capacidades integradas de vez en cuando   métodos modelo, agregando nuevos argumentos. Si usas * args, ** kwargs en   sus definiciones de método, tiene la garantía de que su código   admite automáticamente esos argumentos cuando se agregan.

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

debe anular guardar ( ) . Un ejemplo de la documentación:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top