Django Haystack v2.0.0 と Whoosh v2.4.0 を使用しています。Haystack のドキュメントによると、検索インデックスはパラメータで Django の関連フィールド ルックアップを使用できmodel_attr
ます。ただし、manage.py シェル コマンドを使用して次のコードを実行します。
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
インデックスの再構築を数回試みましたが、インデックスのディレクトリは書き込み可能で、エラー メッセージは表示されません。他のすべてのフィールドは期待どおりに機能します。
次の(単純化された)モデルがあります:
companys/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
ジョブ/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
何が問題なのか誰か知っていますか?