gpt4 book ai didi

django - 按模型类型查找 haystack 结果的数量?

转载 作者:行者123 更新时间:2023-12-01 02:34:07 24 4
gpt4 key购买 nike

假设我有 3 个模型(注释、评论、文章),我想使用 django-haystack 进行搜索,并且我设置了 3 个这样的索引。

class NoteIndex(SearchIndex):
text = CharField(document=True, use_template=True)
author = CharField(model_attr='user', faceted=True)
pub_date = DateTimeField(model_attr='pub_date')

class CommentIndex(SearchIndex):
text = CharField(document=True, use_template=True)
author = CharField(model_attr='user', faceted=True)
pub_date = DateTimeField(model_attr='pub_date')

class ArticleIndex(SearchIndex):
text = CharField(document=True, use_template=True)
author = CharField(model_attr='user', faceted=True)
pub_date = DateTimeField(model_attr='pub_date')

当我得到我的结果时,我可以使用作者方面来显示作者的结果数量。
>>> from haystack.query import SearchQuerySet
>>> sqs = SearchQuerySet().facet('author')
>>> sqs.facet_counts()
{
'dates': {},
'fields': {
'author': [
('john', 4),
('daniel', 2),
('sally', 1),
('terry', 1),
],
},
'queries': {}
}

但是我怎样才能按模型类型找出有多少结果呢?例如。

备注:4
评论:2
第1条

理想情况下,我想过滤它,就像一个正常的方面。我现在正在使用 FacetedModelSearchForm,我可以看到模型类型,只是无法获取计数值。这可能吗?如果是这样,如何?

类似问题:

看起来其他人也问过这个问题,但可能没有问得足够清楚。

Django Haystack faceting on the model type

这个很相似,但他们只想按内容类型排序,我想要按内容类型进行计数。

Using django-haystack, how do I order results by content type

这是另一个类似的问题,但不完全相同,同样没有答案。

Django Haystack Faceting examples

最佳答案

您是否尝试过为此创建另一个方面?唯一可能困难的部分是获取模型名称。最有可能的是,您会想要使用 verbose_name所以它更具可读性,你可以从 _meta.verbose_name 获得.但是,类似于以下代码的内容可能不起作用:

model = CharField(model_attr='_meta.verbose_name', faceted=True)

因此,您可以简单地向模型添加一个方法来仅返回此值:
def get_model_name(self):
return self._meta.verbose_name

然后:
model = CharField(model_attr='get_model_name', faceted=True)

不过,所有这些都未经测试,因为我自己从来不需要这样做。

关于django - 按模型类型查找 haystack 结果的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11102036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com