Plik migracji należy ręcznie utworzyć i zastosować.
Najpierw utwórz pustą migrację:
./manage.py makemigrations myapp --empty
Następnie otwórz plik i dodaj UnaccentExtension
do operations
:
from django.contrib.postgres.operations import UnaccentExtension
class Migration(migrations.Migration):
dependencies = [
(<snip>)
]
operations = [
UnaccentExtension()
]
Teraz zastosuj migrację za pomocą ./manage.py migrate
.
Jeśli podczas ostatniego kroku pojawi się następujący błąd:
django.db.utils.ProgrammingError: permission denied to create extension "unaccent"
HINT: Must be superuser to create this extension.
... następnie tymczasowo przyznaj uprawnienia administratora swojemu użytkownikowi, wykonując postgres# ALTER ROLE <user_name> SUPERUSER;
i jego NOSUPERUSER
odpowiednik. pgAdminIII też to potrafi.
Teraz ciesz się nieakcentowaną funkcjonalnością Django:
>>> Person.objects.filter(first_name__unaccent=u"Helène")
[<Person: Michels Hélène>]