使用SearchQuerySet过滤haystack结果

时间:2011-09-08 15:58:41

标签: django search filter django-haystack

我正在使用haystack与whoosh,尝试将搜索结果限制为仅由当前登录用户创建的条目。 我为其创建索引的类别模型具有外键:

user = models.ForeignKey(User, editable=False)

在我的自定义搜索视图中,我想像这样过滤:

searchqueryset = SearchQuerySet().filter(user=request.user.id)

form = SearchForm(request.GET, searchqueryset=searchqueryset, load_all=True)

    if form.is_valid():
        query = form.cleaned_data['q']
        results = form.search()

在数据库中,表类别有一个条目:

id  name    user_id 
1   test10  1   

当前用户ID确实为1。 但是我没有结果。

当我这样做时:

searchqueryset = None

我收到了“test10”类别条目。 那么有谁知道为什么用户ID过滤器没有按预期工作?

1 个答案:

答案 0 :(得分:2)

您确定Haystack索引中的“user”是否包含用户ID的整数值?也许它有一些其他用户数据(例如用户名),所以比较根本不起作用?

默认情况下,Django用户对象返回用户名,而不是用户ID。