PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann ich die Unaccent-Erweiterung bei einem bereits vorhandenen Modell aktivieren?

Eine Migrationsdatei muss manuell erstellt und angewendet werden.

Erstellen Sie zunächst eine leere Migration:

./manage.py makemigrations myapp --empty

Öffnen Sie dann die Datei und fügen Sie UnaccentExtension hinzu zu operations :

from django.contrib.postgres.operations import UnaccentExtension


class Migration(migrations.Migration):

    dependencies = [
        (<snip>)
    ]

    operations = [
        UnaccentExtension()
    ]

Wenden Sie nun die Migration mit ./manage.py migrate an .

Wenn Sie während des letzten Schritts die folgende Fehlermeldung erhalten:

django.db.utils.ProgrammingError: permission denied to create extension "unaccent"
HINT:  Must be superuser to create this extension.

... dann gewähren Sie Ihrem Benutzer vorübergehend Superuser-Rechte, indem Sie postgres# ALTER ROLE <user_name> SUPERUSER; ausführen und dessen NOSUPERUSER Gegenstück. pgAdminIII kann das auch.

Genießen Sie jetzt die Unakzent-Funktionalität mit Django:

>>> Person.objects.filter(first_name__unaccent=u"Helène")
[<Person: Michels Hélène>]