我有一个用户名基本上是唯一的(不区分大小写),但是当按照用户提供的显示时,大小写很重要
我有以下要求:
- 字段与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还提供了CIEmailField和CICharField,它们是EmailField和CharField的不区分大小写版本