Я использую Django Haystack v2.0.0 и Whoosh v2.4.0. Согласно индексам поиска Haystack documentation, можно использовать поиск по полю Django в параметре model_attr
. Однако, выполнив следующий код, используя команду оболочки manage.py:Haystack SearchIndex model_attr не соответствует правильному отношению?
from haystack.query import SearchQuerySet
for r in SearchQuerySet():
print r.recruitment_agency # Prints True for every job
print r.recruitment_agency == r.object.employer.recruitment_agency
# Prints False if r.object.employer.recruitment_agency is False
Я попытался перестроить индекс несколько раз, каталог индекса является записываемым, и я не получаю никаких сообщений об ошибках. Все остальные поля работают должным образом.
У меня есть следующая (упрощенная) модель:
компания/models.py:
class Company(models.Model):
recruitment_agency = models.BooleanField(default=False)
работа/models.py:
class Job(models.Model):
employer = models.ForeignKey(Company, related_name='jobs')
работа/search_indexes.py:
class JobIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
recruitment_agency = indexes.BooleanField(model_attr='employer__recruitment_agency')
def get_model(self):
return Job
jobs/forms.py:
class JobSearchForm(SearchForm):
no_recruitment_agencies = forms.BooleanField(label="Hide recruitment agencies", required=False)
def search(self):
sqs = super(JobSearchForm, self).search()
if self.cleaned_data['no_recruitment_agencies']:
sqs = sqs.filter(recruitment_agency=False)
return sqs
Кто-нибудь знает, в чем проблема?
вы решить эту проблему? У меня есть [аналогичная проблема, см. Здесь] (http://stackoverflow.com/questions/20878754/haystack-indexing-related-model-issue), ваша помощь будет высоко оценена. – user2104778