私はdjango-oscar + Solr + haystackを使用します。これらのモデル行だけをどのようにインデックスするか、some_field = some_value?
*===============================================================================================================*
| id | partner_sku|price_currency|price_excl_tax|num_in_stock|date_created|date_updated|partner_id|product_id|
|"10451"|"S0010436" | "USD" | 74.00 | 20 |'some_date' |'some_date' | 1 | 5992 |
|"10452"|"S0010436" | "USD" | 80.00 | 0 |'some_date' |'some_date' | 2 | 5992 |
*===============================================================================================================*
partner_id=2
の行だけにインデックスを付ける必要があります。 index_queryset
は、他のパートナーもインデックスを作成しているため、私が必要とすることをしません。
class ProductIndexes(CelerySearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(
document=True, use_template=True,
template_name='search/indexes/cpu/item_text.txt')
upc = indexes.CharField(model_attr="upc", null=True)
title = indexes.CharField(model_attr='title', null=True)
# Fields for faceting
product_class = indexes.CharField(null=True, faceted=True)
category = indexes.MultiValueField(null=True, faceted=True)
partner = indexes.MultiValueField(null=True, faceted=True)
price = indexes.FloatField(null=True, faceted=True)
vendor = indexes.CharField(null=True, faceted=True)
rating = indexes.IntegerField(null=True, faceted=True)
num_in_stock = indexes.BooleanField(null=True, faceted=True)
# Spelling suggestions
suggestions = indexes.FacetCharField()
date_created = indexes.DateTimeField(model_attr='date_created')
date_updated = indexes.DateTimeField(model_attr='date_updated')
def get_model(self):
return get_model('catalogue', 'Product')
def index_queryset(self, using=None):
return self.get_model().objects.filter(stockrecords__partner_id=2).order_by('-num_in_stock')
python manage.py rebuild_index
私は必要なインデックスを実装するためにどのように
を実行していますか?これは同じ問題であると仮定すると、
あなたにとってはうまくいかない限り、あなたのソリューションは間違っているようです。あなたの試みが何であるか、なぜ、どのように達成するのかを理解してください。利用可能なコードだけで、「見える/考えている」という概念に基づいて有用なものを提案することは問題です。 Djangoのすべてのものをここに投稿することは不可能だと理解していますが、 – agg3l