[Python] Django haystack with xapian backend: filtering for empty MultiValueField

Discussão em 'Python' iniciado por Stack, Outubro 2, 2024.

  1. Stack

    Stack Membro Participativo

    I have an Index with this field:

    tags=indexes.MultiValueField(null=True)

    def prepare_tags(self, obj):
    return obj.data.get('tags', [])


    How do I use SearchQuerySet to filter for empty tags?

    Nething of what I've tried works:

    events=SearchQuerySet().models(Event)
    events.filter(tags=[])
    events.filter(tags='')
    events.filter(tags=None) # Silly
    events.filter(tags__in=[]) # Weird


    While there are entries with empty tags:

    (pdb) ev1=[_ for _ in events if not(_.object.data.get('tags', []))]
    (pdb) len(ev1)
    922


    Or even on the haystack level:

    (pdb) len([_ for _ in events if not(_.tags)])
    922

    Continue reading...

Compartilhe esta Página