PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come posso attivare l'estensione unaccent su un modello già esistente

È 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>]