0

[]使用 Django 1.4.2、Haystack 2.0beta 和 ElasticSearch 0.19,我如何查询MultiValueField集为空的结果?

4

2 回答 2

1

我会创建一个名为的整数字段num_<field>并对其进行查询。

在此示例中,“电子邮件”是 MultiValueField,因此我们将创建“num_emails”:

class PersonIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    name = indexes.CharField(model_attr='name')
    emails = indexes.MultiValueField(null=True)
    num_emails = indexes.IntegerField()

    def prepare_num_emails(self, object):
        return len(object.emails)

现在,在您的搜索中,您可以使用

SearchQuerySet().filter(num_emails=0)
于 2013-05-12T17:35:10.250 回答
0

您还可以更改prepare_您的方法MultiValueField

def prepare_emails(self, object):
    emails = [e for e in object.emails]
    return emails if emails else ['None']

然后你可以过滤:

SearchQuerySet().filter(emails=None)
于 2018-12-13T08:21:49.540 回答