Bau Django-filter-Abfragen dynamisch mit args und kwargs
Ich Baue einige Django-filter-Abfragen-dynamisch, mit diesem Beispiel:
kwargs = { 'deleted_datetime__isnull': True }
args = ( Q( title__icontains = 'Foo' ) | Q( title__icontains = 'Bar' ) )
entries = Entry.objects.filter( *args, **kwargs )
Ich bin nur nicht sicher, wie Sie zu konstruieren, den Eintrag für args
. Sagen, dass ich diese array:
strings = ['Foo', 'Bar']
Wie komme ich von dort:
args = ( Q( title__icontains = 'Foo' ) | Q( title__icontains = 'Bar' )
Die nächsten die ich bekomme ist:
for s in strings:
q_construct = Q( title__icontains = %s) % s
args.append(s)
Aber ich weiß nicht, wie Sie die |
Zustand.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Durchlaufen, es direkt mit einem kwarg-format (ich weiß nicht den richtigen Begriff)
Diese Aussehen wird für jeden string in Ihre
query_string
in jedem Feld imfields
und ODER das ErgebnisIch wünschte, ich hatte immer noch meine ursprüngliche Quelle für diese, aber dies ist adaptiert von code, den ich verwenden.
reduce
ist jetztfunctools.reduce
in Python 3 docs.python.org/3.0/library/functools.html#functools.reducehaben Sie die Liste der Q-Klasse von Objekten,
Oder in meinem Fall, musste ich nach UND nach verschiedene sets von filtern: