Cambio de caso (superior / inferior) al agregar datos a través del sitio de administración de Django
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
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()