PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como posso ativar a extensão unaccent em um modelo já existente


Um arquivo de migração precisa ser feito e aplicado manualmente.

Primeiro, crie uma migração vazia:
./manage.py makemigrations myapp --empty

Em seguida, abra o arquivo e adicione UnaccentExtension para operations :
from django.contrib.postgres.operations import UnaccentExtension


class Migration(migrations.Migration):

    dependencies = [
        (<snip>)
    ]

    operations = [
        UnaccentExtension()
    ]

Agora aplique a migração usando ./manage.py migrate .

Se você receber o seguinte erro durante essa última etapa:
django.db.utils.ProgrammingError: permission denied to create extension "unaccent"
HINT:  Must be superuser to create this extension.

... em seguida, permita temporariamente os direitos de superusuário ao seu usuário executando postgres# ALTER ROLE <user_name> SUPERUSER; e seu NOSUPERUSER contrapartida. O pgAdminIII também pode fazer isso.

Agora aproveite a funcionalidade unaccent usando o Django:
>>> Person.objects.filter(first_name__unaccent=u"Helène")
[<Person: Michels Hélène>]