2016-06-02 8 views
3

Ich muss alle Einträge in einem SearchQuerySet zurückgeben, wo ein bestimmtes CharField leer ist, d. H. Eine leere Zeichenfolge.Filter leer CharField in Django Haystacks SearchQuerySet

In meinem search_indexes.py ich habe:

sometext = indexes.CharField(model_attr='sometext') 

Ich habe versucht Filtern die übliche SQS-Syntax:

SearchQuerySet().filter(sometext__exact='') 
SearchQuerySet().filter(sometext__in=['', None]) 

Weder Rückkehr nur die leeren Einträge. Die erste gibt alle Einträge zurück, die zweite gibt keine zurück.

Fehle ich etwas in meinen SearchIndex Definitionen? Gibt es eine Möglichkeit, dies in Haystack mit dem Whoosh-Backend zu tun?

Antwort

-1

Sie können dies tun:

SomeQuerySet().filter(sometext='') 
+0

Ich glaube, das ist das gleiche wie .filter ist (sometext__exact = ''), die ich erwähnte ich versucht oben – echus

+0

Ist das gleiche ... aber es funktioniert gut, wenn Datenbankkonfiguration leer = True und null = False –

+0

Es funktioniert gut für einen QuerySet-Filter ja, aber nicht mit Haystack SearchQuerySet - meine Frage ist über die letzteren. Die API-Dokumentation von Haystack scheint dies nicht zu erfassen. – echus

0

dies versuchen, es funktioniert für mich:

from haystack.inputs import Raw 
r = SearchQuerySet() 
r.exclude(sometext=Raw('*')) 
Verwandte Themen