2010-12-09 63 views
0

我正在设置django-haystack,只是有一个问题。Django + Haystack搜索用户全名

我使用Django的配置文件,允许我补充独立的信息,即,城市,性别等

我为我的UserProfile创建search_indexes.py当我执行搜索似乎只返回一个使用者名称,即导致。

如果我键入john和用户的用户名是约翰那么它就会回升,如果我键入James和用户john的第一个名字是James它不返回结果。

我search_indexes.py

from haystack.indexes import * 
from haystack import site 
from models import UserProfile 

class UserProfileIndex(SearchIndex): 
    text = CharField(document=True, use_template=True) 
    user = CharField(model_attr='user', use_template=True) 

    def prepare_user(self, obj): 
     return "%s <%s>" % (obj.user.get_full_name(), obj.user.email) 

site.register(UserProfile, UserProfileIndex) 

回答

1

我之前只浏览了草垛代码,不过,是不是因为你的模型属性“用户”,这意味着,这将是唯一的字段标引搜索?

1

UserProfile_text.txt(SearchIndex模板)的内容是什么? 它应该像

{{ object.username }} 
{{ object.firstname }} 
... 

与所有你想从该模型索引的字段。见documentation

0

关键的一点是

basicly您定义wantted哪些关键字在你的指数模型的模板被索引

所以请补充一点,你需要到您的模板文件中的字段

0

模板文件应该是这样的:

{{ object.user.first_name}} 
{{ object.user.middle_name }}