Wie zwei Spalten des Tabellen-Django-Modells dargestellt werden

8

Ich führe die Suche in meinem Projekt durch, was ich möchte, ist concat zu Spalte in where-Klausel, um Ergebnisse von der Tabelle zu erhalten.

Hier ist was ich mache:

%Vor%

Nun möchte ich eine weitere ODER-Bedingung hinzufügen wie:

CONCAT(' ', created_by__first_name, created_by__last_name) like '%'search_value'% '

Wenn ich diese Bedingung jedoch dem Abfrage-Set hinzufüge, wird daraus AND

%Vor%

Wie konvertiere ich dies in eine OR-Bedingung?

    
Hassan Shahbaz 07.07.2017, 10:35
quelle

3 Antworten

6

Erweiterte Filter können durch gelöst werden Q () -Objekt und Abfrageausdrücke wie Func (), Value () und F (). Der einzige verwendete Trick ist a Benutzerdefinierte Suche "rhs_only", die die rechte Seite der Suche verwendet und die ignoriert linke Seite, weil es einfacher ist, alle verketteten Felder direkt auf der rechten Seite zu verwenden. Eine denkwürdige Funktion concat_like kapselt, dass alle in Abfragen leicht verwendet werden können.

%Vor%

Alle booleschen Ausdrücke und verwandte Objekte werden von diesem Code unterstützt. Alle Argumente sind korrekt maskiert.

Beispielverwendung:

%Vor%     
hynekcer 16.07.2017 00:37
quelle
4

Relevante Dokumentation:

Sie können auf annotierte Felder innerhalb der Filtermethode verweisen. So können Sie nach zwei verketteten Feldern filtern und sie als eine andere OR-Bedingung hinzufügen:

%Vor%

Zum Spaß, hier ist ein funktionierendes Beispiel basierend auf dem Benutzermodell.

%Vor%     
Greg Sebastian 17.07.2017 06:31
quelle
3

Was Sie brauchen, ist für create search FullText. Ich empfehle die Verwendung ( Ссылка )

Siehe Dokumentation von Django ( Ссылка )

    
Elinaldo Monteiro 16.07.2017 00:07
quelle

Tags und Links