Postgres queries are CaSeSensitivE unlike in MySQL.
When a simple
Model.objects.get(field='hello') would get the record.
Using a postgres db you would need to use
unique doesn’t work with different cases with standard postgres. That is why django has the CIText Mixin and postgres has the
Could be a feature not a bug…
This also affects a field with
The case sensitivity will still come into play.
You can make the field lowercase by overriding the model’s save method:
def save(self, **kwargs): '''Override save to enforce project name is lowercase''' self.name = self.name.lower() super().save()
But you don’t need to. Juse ensure the field is a
CICharField. A case insensitive field.
Ran into another problem:
crowdminder=# create extension citext; ERROR: extension "citext" already exists
citext is already there but when running a django migration I get:
django.db.utils.ProgrammingError: type "citext" does not exist LINE 1: ...llink" ("id" serial NOT NULL PRIMARY KEY, "email" citext NUL...
So I go into
drop extension citext cascade;
Then the migrate works.
It’s crazy and weird.
If this happens on production, it could certainly cause problems.