Отфильтруйте результат стога сена с помощью SearchQuerySet - PullRequest
1 голос
/ 08 сентября 2011

Я использую стог сена с 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   

И текущий идентификатор пользователя действительно равен 1. Но я не получаю результатов.

Когда я делаю это:

searchqueryset = None

Я получаю запись категории "test10". Так кто-нибудь знает, почему фильтр идентификатора пользователя не работает должным образом?

1 Ответ

2 голосов
/ 08 сентября 2011

Вы уверены, что «пользователь» в вашем индексе Haystack содержит целочисленное значение идентификатора пользователя? Возможно, там есть другие пользовательские данные (например, имя пользователя), поэтому сравнение просто не работает?

По умолчанию объект пользователя Django возвращает имя пользователя, а не идентификатор пользователя.

...