我正在使用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过滤器没有按预期工作?
答案 0 :(得分:2)
您确定Haystack索引中的“user”是否包含用户ID的整数值?也许它有一些其他用户数据(例如用户名),所以比较根本不起作用?
默认情况下,Django用户对象返回用户名,而不是用户ID。