Jake Mulhern
Jake Mulhern

Reputation: 772

Making Django model Query case-insensitive

I would like to look up users by their email without worrying about uppercase letters.

How would I do this? I tried

customer = Customer.objects.get(email__lower="[email protected]")

and got this error.

django.core.exceptions.FieldError: Unsupported lookup 'lower' for EmailField or join on the field not permitted.

Upvotes: 3

Views: 2680

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 476574

You can work with the __iexact lookup [Django-doc]:

customer = Customer.objects.get(email__iexact='[email protected]')

Contrary to popular belief, calling lowercase over two items does not check if the two match in a case insensitive way. Some characters have no lowercase/uppercase variant, for example ß [wiki]. In order to determine if two strings match case-insensitive, one should apply a case folding [wiki].

Upvotes: 4

Related Questions