My tests stopped working so I have decided to abandon case-insensitive 
fields and do it all manually. 

Thanks everyone.

Cheers

Mike

On Monday, August 7, 2023 at 12:29:28 PM UTC+10 Mike Dewhirst wrote:

> On 6/08/2023 9:17 pm, Chetan Ganji wrote:
>
> Thanks Chetan
>
> I have seen that 'icu' and 'und-whatever...' in various places on the web 
> - so it seems to be spreading - but I haven't had the brainspace to 
> understand it yet.
>
> I'll try an experiment with provider='C' and locale='C' because that is 
> how most of my databases are already established. If that passes my tests I 
> might move on to other things.
>
> From what I can see, PostgreSQL are likely to deprecate citext as 
> inelegant. That would be why Django has deprecated it.
>
> Thanks again.
>
> Mike
>
> Check this out.
> https://gist.github.com/hleroy/2f3c6b00f284180da10ed9d20bf9240a
>
> # According to Django documentation, it’s preferable to use 
> non-deterministic collations
> # instead of the citext extension for Postgres > 12.
> # Example migation to create the case insensitive collation
> class Migration(migrations.Migration):
> operations = [
> CreateCollation(
> 'case_insensitive',
> provider='icu',
> locale='und-u-ks-level2',
> deterministic=False
> )
> ]
> # Example model using the new db_collation parameter introduced with 
> Django 3.2
> class Tag(models.Model):
> name = models.CharField(max_length=50, db_collation='case_insensitive')
> class Meta:
> ordering = ['name']
> def __str__(self):
> return self.name 
>
> Regards,
> Chetan Ganji
> +91-900-483-4183
> [email protected]
> http://ryucoder.in
>
>
> On Sun, Aug 6, 2023 at 12:32 PM Mike Dewhirst <[email protected]> 
> wrote:
>
>> On 5/08/2023 7:58 pm, Chetan Ganji wrote:
>>
>> Hi Mike
>>
>> RE: The primary use case is to establish case-insensitivity when checking 
>> names - including usernames, company names and abbreviations/acronyms. 
>>
>> I dont know anything about db_collation. 
>>
>>
>> Me neither
>>
>> Below 4 lookups should solve most common scenarios. 
>>
>>
>> Actually that was how I did it originally. I switched to using the 
>> PostgreSQL CI field because it is all done in the database - much faster - 
>> and my code is much reduced and therefore fewer possibilities for bugs etc.
>>
>> Judging from the Django release notes and the PostgreSQL docs there 
>> should be a straightforward answer to my question. Researching the correct 
>> answer is complex enough to make me ask here first.
>>
>> Cheers
>>
>> Mike
>>
>> https://docs.djangoproject.com/en/4.2/ref/models/querysets/#field-lookups
>>
>>
>>
>> Regards,
>> Chetan Ganji
>> +91-900-483-4183
>> [email protected]
>> http://ryucoder.in
>>
>>
>> On Sat, Aug 5, 2023 at 1:35 PM Mike Dewhirst <[email protected]> 
>> wrote:
>>
>>> The following warning triggered a bit of research which looks like a 
>>> significant amount of study will be required to find the collation needed 
>>> ...
>>>
>>>
>>> django.contrib.postgres.fields.CICharField is deprecated. Support for it 
>>> (except in historical migrations) will be removed in Django 5.1.
>>>         HINT: Use CharField(db_collation="…") with a case-insensitive 
>>> non-deterministic collation instead.
>>>
>>>
>>> Does anyone have experience they would like to share? What replaces that 
>>> ellipsis?
>>>
>>> The primary use case is to establish case-insensitivity when checking 
>>> names - including usernames, company names and abbreviations/acronyms. 
>>> Maybe there is a better way to handle that?
>>>
>>> This is my typical PostgreSQL database spec ...
>>>
>>> CREATE DATABASE xxxx
>>>     WITH
>>>     OWNER = miked
>>>     ENCODING = 'UTF8'
>>>     LC_COLLATE = 'C'
>>>     LC_CTYPE = 'C'
>>>     TABLESPACE = pg_default
>>>     CONNECTION LIMIT = -1
>>>     IS_TEMPLATE = False;
>>>
>>> Many thanks for any help
>>>
>>> Cheers
>>>
>>> Mike
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Django users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/django-users/2eccab9e-e296-55e0-05de-e8d4cf708262%40dewhirst.com.au
>>>  
>>> <https://groups.google.com/d/msgid/django-users/2eccab9e-e296-55e0-05de-e8d4cf708262%40dewhirst.com.au?utm_medium=email&utm_source=footer>
>>> .
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/CAMKMUjuxfeV5m4QiPz1jEyh7fRobqZn7SCp4dnXnjrSOBirh7Q%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/django-users/CAMKMUjuxfeV5m4QiPz1jEyh7fRobqZn7SCp4dnXnjrSOBirh7Q%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>>
>>
>> -- 
>> Signed email is an absolute defence against phishing. This email has
>> been signed with my private key. If you import my public key you can
>> automatically decrypt my signature and be sure it came from me. Your
>> email software can handle signing.
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/e3d57fb4-5899-a04c-f2b8-f39591c978c7%40dewhirst.com.au
>>  
>> <https://groups.google.com/d/msgid/django-users/e3d57fb4-5899-a04c-f2b8-f39591c978c7%40dewhirst.com.au?utm_medium=email&utm_source=footer>
>> .
>>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
>
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/CAMKMUju4y_H%2BDUr1qn0Y4eNjYC_o%2BzCe5PNRiLctUZxfos5TSA%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/django-users/CAMKMUju4y_H%2BDUr1qn0Y4eNjYC_o%2BzCe5PNRiLctUZxfos5TSA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
>
>
> -- 
> Signed email is an absolute defence against phishing. This email has
> been signed with my private key. If you import my public key you can
> automatically decrypt my signature and be sure it came from me. Your
> email software can handle signing.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/8c14fa32-0c90-41b8-a6f5-5a10ca25ecc0n%40googlegroups.com.

Reply via email to