Podría definir un campo de modelo personalizado derivado de models.CharField
.Este campo podría verificar valores duplicados, ignorando el caso.
La documentación de campos personalizados está aquí http://docs.djangoproject.com/en/dev/howto/custom-model-fields/
Mire http://code.djangoproject.com/browser/django/trunk/django/db/models/fields/files.py para ver un ejemplo de cómo crear un campo personalizado subclasificando un campo existente.
Podría usar el módulo citext de PostgreSQL https://www.postgresql.org/docs/current/static/citext.html
Si usa este módulo, el campo personalizado podría definir "db_type" como CITEXT para bases de datos PostgreSQL.
Esto conduciría a una comparación sin distinción entre mayúsculas y minúsculas para valores únicos en el campo personalizado.