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.