Saltar al contenido

Charfield insensible a mayúsculas y minúsculas en modelos django

Recuerda que en las ciencias informáticas un error casi siempere suele tener varias resoluciones, no obstante nosotros aquí te mostraremos lo más óptimo y eficiente.

Solución:

Para responder mi propia pregunta:

Descubrí que puedo tener un método limpio en mi modelo. así que agregué

class Category(models.Model):
    name = models.CharField(max_length=200, unique=True)

    def clean(self):
        self.name = self.name.capitalize()

Está en mayúscula la primera letra, que luego es manejada por el save método, que llama al validate_unique método para generar un error.

Puede usar el campo de modelo específico de Postgre llamado campos de Citext (campos que no distinguen entre mayúsculas y minúsculas).

Hay tres opciones en este momento:

class CICharField(**options), class CIEmailField(**options) y class CITextField(**options)

Ejemplo:

from django.db import models

from django.contrib.postgres.fields import CICharField


class Category(models.Model):
    name = CICharField(verbose_name="Name", max_length=255)

Pero no olvide crear una extensión para los campos citext. Mira aquí.

Básicamente, debe agregar la clase de extensión en el archivo de migración, dentro del operations arrayantes de la primera CreateModel operación.

# migration file

    operations = [
        CITextExtension(),        # <------ here
        migrations.CreateModel(
            ...
        ),
        ...,
    ]

Comentarios y puntuaciones de la guía

Al final de todo puedes encontrar las reseñas de otros programadores, tú también tienes la habilidad dejar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 3.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *