Django中不区分大小写的唯一模型字段?

我有一个用户名基本上是唯一的(不区分大小写),但是当按照用户提供的显示时,大小写很重要

我有以下要求:

  • 字段与CharField兼容
  • 字段是唯一的,但不区分大小写
  • 字段需要可搜索,忽略大小写(避免使用iexact,容易忘记)
  • 字段保存时保持大小写完整
  • 最好在数据库级别强制执行
  • 最好避免存储额外字段

在Django这可能吗

我提出的唯一解决方案是“以某种方式”重写模型管理器,使用一个额外字段,或者在搜索中始终使用“iexact”

我使用的是Django 1.3和PostgreSQL 8.4.2

从Django 1.11开始,您可以使用CITextField,这是一个Postgres特定的字段,用于支持citext类型的不区分大小写的文本

来自django.db导入模型的


从django.contrib.postgres.fields导入CITextField
给某物分类(models.Model):
foo=CITextField()

Django还提供了CIEmailFieldCICharField,它们是EmailFieldCharField的不区分大小写版本

发表评论