2013-09-16 3 views

ответ

2

Возможно, вам необходимо index_queryset

class YourIndex(...): 
    def index_queryset(self, using=None): 
     return YourModel.objects.filter(searchable=True) 
+0

Для моего случая, когда я сохраняю запись с 'для поиска = false' будет проиндексирована. И когда используется 'update_index', применяется фильтр, указанный в' index_queryset', и обновляются только индексы с 'searchable = True'. Но все же есть записи в индексе поиска с 'searchable = False' (добавляется при сохранении записи), можно ли это избежать? – NEB

+0

@NEB Можете ли вы рассказать о версии 'django-haystack', которую вы используете? Возможно, элементы с 'False'' searchable' являются добавленными элементами, прежде чем добавить 'index_queryset', попытайтесь перестроить весь индекс? – okm

+0

Я использую haystack-v2.1.0 и django-v1.7. Индекс перестройки (использует 'update_index') дает правильный индекс (это не проблема), но я связан с новыми записями, по умолчанию' searchable' установлен в 'false'. Я попробовал как «RealtimeSignalProcessor», так и «CelerySignalProcessor» (celery-v3.1.15), вопрос все тот же. Но с 'CelerySignalProcessor' я столкнулся с еще одной проблемой, упомянутой в [link] (http://stackoverflow.com/questions/24223369) (это связано с наличием блока транзакций и главным образом сбой' djcelery_transactions' , из-за новых изменений DB в django-v1.7) – NEB

Смежные вопросы