Полное имя пользователя поиска Django + Haystack

Я настраиваю django-haystack и у меня есть вопрос.

Я использую django-профили, которые позволяют мне добавлять отдельную информацию, например, город, пол и т. д.

Я создал search_indexes.py для своего UserProfile, когда я выполняю поиск, кажется, что он возвращает только результат имени пользователя пользователя, т.е.

если я наберу john, а имя пользователя — john, тогда оно будет выбрано, если я наберу James, а имя пользователя johnJames, результат не будет возвращен.

мой 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)

person ApPeL    schedule 09.12.2010    source источник


Ответы (4)


Раньше я только просматривал код стога сена, но разве это не потому, что вы индексируете атрибут модели «пользователь», что означает, что это будет единственное поле для поиска?

person Josh Smeaton    schedule 09.12.2010

Каково содержание вашего UserProfile_text.txt (шаблон SearchIndex)? Это должно быть что-то вроде

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

со всеми полями, которые вы хотите проиндексировать из этой модели. См. документацию.

person Daniel    schedule 15.12.2010

ключевой момент

в основном вы определяете, какие ключевые слова вы хотите проиндексировать в своем шаблоне вашей индексной модели.

поэтому, пожалуйста, добавьте поля, которые вам нужны, в файл шаблона.

person soField    schedule 14.12.2011

Файл шаблона должен быть таким:

{{ object.user.first_name}}
{{ object.user.middle_name }}
person Ashok Joshi    schedule 22.09.2017