[PYTHON] Führen Sie eine mehrdeutige Suche nach MySQL in Django durch

Über Fuzzy-Suche von MySQL

https://www.softel.co.jp/blogs/tech/archives/1877 Für die Abfrage habe ich hier verwiesen.

Wie man in Django schreibt

Verwenden Sie "extra", da spezielle Abfragen nicht mit "filter" durchgeführt werden können

    def get_ambiguous_queryset(self, queryset, value, columns):
        """

        :param queryset:
        :param value:
        :param columns:
        :return:
        """

        query_text = ''
        count = 0
        for column in columns:
            if query_text != '':
                query_text += ' OR '
            temp_value = value
            if isinstance(value, list):
                if len(value) > count:
                    temp_value = value[count]
                else:
                    temp_value = value[0]
            query_text += f"CONVERT({column} USING utf8) COLLATE utf8_unicode_ci LIKE %s"
            temp_value = temp_value.replace('%', r'\%%').replace('_', r'\_')
            params.append(f'%{temp_value}%')
            count += 1
        if query_add:
            query_text += query_add
        return queryset.extra(where=[query_text], params=params)

#
self.get_ambiguous_queryset(queryset, value, ['name', 'code', 'description'])

#()
self.get_ambiguous_queryset(queryset, [value, self.convert_tel(value)], ['name', 'tel'])

#Verwendung des Abfragesatzes, des zu durchsuchenden Werts, Übergabe der zu durchsuchenden Spalte Sie können auch den zu durchsuchenden Wert in einem Array übergeben. Er ist mit der zu durchsuchenden Spalte verknüpft. Seien Sie vorsichtig, wenn ein Join erforderlich ist. Masu)
self.get_ambiguous_queryset(queryset, value, ['shop.name', 'shop.code'])

#OK-Muster (verbunden, wenn der Shop im Filter geschrieben ist)
self.get_ambiguous_queryset(queryset, value, ['shop.name', 'shop.code']).filter(shop__name__isnull=False)

Impressionen

Selbst wenn ich weiß, wie man es in eine Abfrage schreibt, frage ich mich immer, wie man es in Django schreibt

Recommended Posts

Führen Sie eine mehrdeutige Suche nach MySQL in Django durch
Suchen Sie nach Zeichenfolgen in Dateien
Schleife Für umgekehrte Anweisung in HTML-Datei auf Django
Django-Suche
Same-Site-Attributeinstellung des Cookies in Django
(Hinweis) Suchreihenfolge der Vorlagendateien in Django
Abfrageparameter für GET-Anforderungen mit Django abrufen
So führen Sie vom Server gesendete Ereignisse in Django durch
Suchen Sie selbst anhand der Methoden in Djangos Modell
[Einführung für Anfänger] Umgang mit MySQL mit Python
Internationalisierungsunterstützung mit Django 1.9
Form in Django
Verfahren zum Erstellen einer Anwendung mit Django mit Pycharm ~ Vorbereitung ~
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Erstellen Sie einen nicht privilegierten Container, der NVIDIA-GPUs in LXC verwenden kann
Lernnotizen für die Migrationsfunktion im Django-Framework (3)
Lernnotizen für die Migrationsfunktion im Django-Framework (1)
Suchen Sie rekursiv nach Dateien und Verzeichnissen in Python und geben Sie sie aus