Você pode definir um campo de modelo personalizado derivado de
models.CharField
.Este campo pode verificar valores duplicados, ignorando maiúsculas e minúsculas. A documentação dos campos personalizados está aqui http://docs.djangoproject.com/en/dev/howto/custom-model-fields/
Consulte http://code.djangoproject.com/browser/django/trunk/django/db/models/fields/files.py para obter um exemplo de como criar um campo personalizado criando uma subclasse de um campo existente.
Você pode usar o módulo citext do PostgreSQL https://www.postgresql.org/docs/current/static/citext.html
Se você usar este módulo, o campo personalizado pode definir "db_type" como CITEXT para bancos de dados PostgreSQL.
Isso levaria a uma comparação sem distinção entre maiúsculas e minúsculas para valores exclusivos no campo personalizado.