Django-Abfrage, wie Sie schreiben: WO Feld WIE '10__8__0__'?
Es ist enthält Methode, aber es bedeutet: WHERE field LIKE '%10%'
. Und ich brauche genau WHERE field LIKE '10__8__0__'
.
Dank!
EDIT:
Ich meine string ist '10xx8xx0xx'
, wo x - beliebiges symbol
tun Sie es, indem Sie
raw
, docs.djangoproject.com/en/dev/topics/db/sql/...InformationsquelleAutor Vitalii Ponomar | 2011-12-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies mit django-wie:
Außerdem erstellte ich eine Verwandte ticket auf der Django-Projekt-Website
Das funktioniert auch, aber da ich im Begriff war, um die Suche für die '%Abfrage%', habe ich beschlossen, nur verwenden Bereich__enthält
Dies ist flexibler als __enthält, warum nicht, es war nicht enthalten in Django standardmäßig? es sollte Hinzugefügt werden, der in django nicht zu ersetzen __enthält.
InformationsquelleAutor Goin
Der einfachste Weg, um die Suche, die Sie zu tun beabsichtigen, ist durch regulären Ausdruck:
Edit:
Meine Lösung ist vielleicht viel, viel langsamer als WIE. Das problem ist aber, dass die django ORM nicht ermöglichen einfachen Zugang zu
LIKE
. Es wäre am einfachsten, wennstartswith
oderendswith
waren, ausreichend für Ihre Zwecke.LIKE
zumindest für MySQL.Das funktioniert auch, aber ist nicht so effizient, wie. Warum nicht, existiert so etwas? MyModel.Objekte.filter(Feld,__like='10%8&0%'). Wenn der ORM nicht scape die Zeichenfolge, die Sie können, um dies zu tun: MyModel.Objekte.filter(Feld='10%8&0%')
viel langsamer, aber es ist auch Ihre Lösung o_O. Die Lösung nach der Bis-Backhaus-Lösung
+1 Versuchen regex-ersten. Wenn es sich herausstellt, zu langsam sein, dann können Sie
extra()
Ich tun etwas wie dieses: MyModel.Objekte.filter(Feld__wie="10%%8%%0%%"). Nun ist aber eine schmutzige Lösung. Ich will erstellen Sie eine app, um dieses zu erhalten, und wird eine saubere und schöne Lösung. Ich denke, dass morgen oder übermorgen werde ich dies veröffentlichen.
InformationsquelleAutor tback
Können Sie
extra
um dies zu tun:Beachten Sie, dass
column_name
ist der name der Spalte in der Datenbank, anstatt das Feld name in Ihren Django-Modell. In vielen Fällen, den Namen des Feldes und der Spalte name wird der gleiche sein, aber wenn Sie sich unterscheiden, achten Sie auf die Spalte name.InformationsquelleAutor Jimothy
In SQL können Sie Abfragen wie:
Versuchen, in Ihren Django-filter.
InformationsquelleAutor Jordan