使数据库对象不可搜索

时间:2012-10-13 05:38:07

标签: django solr django-haystack

使用django-haystack和solr作为搜索引擎,我成功实现了一个搜索引擎,该搜索引擎会抛出用户名,名字,姓氏或电子邮件地址与给定查询匹配的用户列表。

search_indexes.py

from haystack.indexes import *
from haystack import site

from django.contrib.auth.models import User

class UserIndex(SearchIndex):
    text = CharField(document=True, use_template=True)
    first_name = CharField(model_attr='first_name')
    last_name = CharField(model_attr='last_name')
    email = CharField(model_attr='email')

    def index_queryset(self):
        return User.objects.exclude(username='root')

site.register(User, UserIndex)

user_text.txt

{{ object.username }}
{{ object.first_name }}
{{ object.last_name }}
{{ object.email }}

但是,我计划让用户设置其隐私设置,以便无法使用first_name,last_name或电子邮件地址进行搜索。

我几天来一直试图完成这项功能但是还没有找到任何真正好的解决方案。

是否可以完成上述功能?

非常感谢你。

1 个答案:

答案 0 :(得分:1)

您可以创建一个约束表,例如使用haystack的SearchQuerySet来排除。以下是使用tastypie作为API的示例,但这也可能是您的自定义服务或视图层。

http://django-tastypie.readthedocs.org/en/latest/resources.html#advanced-filtering