Reputation: 318
my code looks like following. here SearchQuerySet().filer is not returning anything.
search_indexes.py
class sample_index(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
books = indexes.CharField(model_attr='books')
search_tags = indexes.MultiValueField()
def prepere_tags(self, obj):
return [tag.tag for tag in obj.seacrh_tags.all()]
def get_model(self):
return sample
def index_queryset(self, using=None):
return self.get_model().objects
def load_all_queryset(self):
return sample.objects.all().select_related()
model.py
class tags(models.Model):
tag = models.CharField(max_length=4, unique=True, db_index=True)
def __unicode__(self):
return unicode(self.tag)
class sample(models.Model):
books = models.CharField(db_index=True, max_length=256, null=False)
search_tags = models.ManyToManyField(tags, db_index=True)
def __unicode__(self):
return unicode(self.md5sum)
view.py
def search_h(request):
search_string = request.GET.get('search_string', '')
values = []
sqs = SearchQuerySet().filter(search_tags=search_string)
values = [a.object for a in sqs[0:10]]
return render(request, "search/indexes/app/test.html", {'values': values})
sample_text.txt
{{ object.text }}
{% for tag in object.search_tags.all %}
{{ tag.tag }}
{% endfor %}
Here values is a empty list. even sqs is coming as empty. Any idea what am i missing here.
Upvotes: 0
Views: 1117
Reputation: 39689
You have defined following field in index search_tags = indexes.MultiValueField()
. But you are preparing a MultiValueField tags
(prepare_tags
) which does not exist in index, it should be prepare_search_tags
:
def prepare_search_tags(self, obj):
return [tag.tag for tag in obj.seacrh_tags.all()]
Upvotes: 0