【问题标题】:Filter haystack result with SearchQuerySet使用 SearchQuerySet 过滤 haystack 结果
【发布时间】:2011-11-13 03:25:02
【问题描述】:

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

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 过滤器没有按预期工作吗?

【问题讨论】:

    标签: django search filter django-haystack


    【解决方案1】:

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

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

    【讨论】:

    • 哦。我认为由于 result.object 包含记录 id,这不是我索引中的字段,因此所有字段都必须存在。显然,情况并非如此。假设那是因为用户是 FK?无论如何,在将用户添加到我的索引并将查询集更改为 (user=request.user) 之后,这行得通。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多