PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak mogę aktywować nieakcentowe rozszerzenie na już istniejącym modelu?

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zamawianie postgresu, aktualizacji i blokowania

  2. Przywileje i bezpieczeństwo PostgreSQL — blokowanie schematu publicznego

  3. Znajdź wszystkie mecze danej drużyny w PostgreSQL

  4. Dodanie kolumny do tabeli z wartością z następnego wiersza

  5. Ustawianie niestandardowej opcji w procedurze składowanej