sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo puedo activar la extensión sin acento en un modelo ya existente?

Un archivo de migración debe crearse y aplicarse manualmente.

Primero, crea una migración vacía:

./manage.py makemigrations myapp --empty

Luego abra el archivo y agregue UnaccentExtension a operations :

from django.contrib.postgres.operations import UnaccentExtension


class Migration(migrations.Migration):

    dependencies = [
        (<snip>)
    ]

    operations = [
        UnaccentExtension()
    ]

Ahora aplique la migración usando ./manage.py migrate .

Si recibe el siguiente error durante el último paso:

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

... luego permita temporalmente los derechos de superusuario a su usuario realizando postgres# ALTER ROLE <user_name> SUPERUSER; y su NOSUPERUSER contrapartida. pgAdminIII también puede hacer esto.

Ahora disfruta de la funcionalidad sin acento usando Django:

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