È necessario creare e applicare manualmente un file di migrazione.
Innanzitutto, crea una migrazione vuota:
./manage.py makemigrations myapp --empty
Quindi apri il file e aggiungi UnaccentExtension
alle operations
:
from django.contrib.postgres.operations import UnaccentExtension
class Migration(migrations.Migration):
dependencies = [
(<snip>)
]
operations = [
UnaccentExtension()
]
Ora applica la migrazione utilizzando ./manage.py migrate
.
Se ricevi il seguente errore durante l'ultimo passaggio:
django.db.utils.ProgrammingError: permission denied to create extension "unaccent"
HINT: Must be superuser to create this extension.
... quindi consenti temporaneamente i diritti di superutente al tuo utente eseguendo postgres# ALTER ROLE <user_name> SUPERUSER;
e il suo NOSUPERUSER
controparte. pgAdminIII può farlo anche tu.
Ora goditi la funzionalità senza accento usando Django:
>>> Person.objects.filter(first_name__unaccent=u"Helène")
[<Person: Michels Hélène>]