Hi Ich finde, dass wir in der Postgres-Datenbank die Standard-Akzentempfindlichkeit (bei alten Mail-Exchanges) nicht konfigurieren können.
Gibt es eine Möglichkeit, dass ein _icontains auch für spezielle Zeichen unempfindlich ist (é, è, è, ç, ï) oder ich postgres regex verwenden muss, um beide Seiten durch _iregex zu ersetzen (ç- & gt; c, é- & gt; e ...)?
bearbeiten: Diese Frage ist alt und wird für Benutzer von django vor 1.8 aufbewahrt. Für diejenigen, die die neuesten Django-Versionen verwenden, hier der neue Weg: Ссылка
EDIT: Django 1.8 macht Akzent unsensitive Suche nach Postgresql Built-in. Ссылка
Tatsächlich gibt es in postgres contr (8.4+) eine unakzente Funktion, um leicht zu suchen:
für Postgres 9 / 8.5:
für Postgres 8.4:
hier ein Anwendungsbeispiel aus django:
%Vor%Sie können die Anwendung "uncacent" bei der Textsuche vor dem Vergleich anwenden.
Option, die ich gemacht habe, ist:
%Vor% Verwenden Sie diese Datei base.py
in einem Ordner und verwenden Sie diesen Ordner als db backend. ictontains und istartswith sind nun fall- und akzentunempfindlich.
Ich habe es geschafft, unaccent von postgresql contrib zu installieren, aber diese Antwort, die Patches django hat nicht funktioniert. load_backend on django.db.utils erzwingt, dass der Backend-Name mit django.db.backends beginnt.
Die Lösung, die für mich funktionierte, bestand darin, diesen Code in eines meiner Module einzufügen:
%Vor%Nun funktionieren inaccent Suchanfragen, sogar innerhalb von django admin! Danke für deine Antwort oben!
Ich glaube nicht, dass Sie in der Lage sein werden, die Standard-Django-Feldsuche zu verwenden, es sei denn, Sie speichern eine nicht akzentuierte Version Ihres Textes in einer anderen Spalte und führen die Suche dort durch. Sie könnten eine doppelte Spalte mit editable = False hinzufügen und die save () -Methode des Modells überschreiben, um dieses Feld vom ursprünglichen Text mit Akzent zu aktualisieren.
Python: Entfernen Akzente von Unicode
PostgreSQL Wiki: Streichen Sie Akzente von Strings und geben Sie sie in Kleinbuchstaben aus
Ich arbeite an einem inakzenten Suchfeld für django und postgreSQL. Es ist auf Github: Ссылка
Es funktioniert jetzt gut, aber es braucht noch viel Arbeit. Ich benutze es und es zeigt keine Probleme für den Moment.
Die Art der Verwendung besteht darin, einen neuen Manager für das Modell zu erstellen, in dem uncents gesucht werden soll (sehen Sie sich das Beispiel an, das am Ende von manager.py Datei im Projekt).
Die Suchvorgänge, die ich bereits implementiert habe, sind:
"__ aexakt"
"__ aiexact"
"__ acontains"
"__ aicontains"
Sie sind äquivalent zu den allgemeinen Feldsuchen, die mit django geliefert werden:
"__ genau"
"__ iexact"
"__ enthält"
"__ icontains"
mit dem Unterschied, dass sie für die am häufigsten verwendeten Akzentzeichen "akzentunempfindlich" sind.
Tags und Links django postgresql