Elasticsearch を使用して django-haystack を正常に動作させることができました。以下の例では、任意の販売アイテムを検索でき、結果に表示されます。
インデックスを作成しました:
class SalesItemIndex(SearchIndex, Indexable):
text = CharField(document=True, use_template=True)
item_description = CharField(model_attr='item_description')
def get_model(self):
return SalesItem
def index_queryset(self):
"""Used when the entire index for model is updated."""
return self.get_model().objects.all()
モデル SalesItem:
class SalesItem(models.Model):
item_description = models.CharField(_(u"Item Description"), max_length=40)
company = models.ForeignKey(Company)
def __unicode__(self):
return self.item_description
ただし問題は、ユーザーが自分の会社に属していないものも含め、すべての販売アイテムを検索できることです。
通常、すべてsalesitems = SalesItem.objects.all()
を返す代わりに、これを使用して、ユーザーが自分の会社に属するアイテムのみが表示されるようにします。
profile = request.user.get_profile()
sales_items = profile.company.salesitem_set.all()
このルールで検索を制限できますか?