Django haystack, no url in search results -


i have haystack + django + aldryn-search setup searches on django-cms project. trying indexes on models work, can see results , text description fine, urls /search/none. how override url definition?

search_indexes.py:

import datetime haystack import indexes .models import event  class eventindex(indexes.searchindex, indexes.indexable):     text = indexes.charfield(document=true, use_template=true)     title = indexes.charfield(model_attr='title')       def get_model(self):         return event      def index_queryset(self, using=none):         "used when entire index model updated."         return self.get_model().objects.order_by('created') 

models.py

class event(changesmixin, models.model):     ....     title = models.charfield(max_length=40)     ....      def __str__(self):         return self.title      def get_absolute_url(self):         return '/cab/event/%i/' % self.id 

i see you're not subclassing aldrynindexbase or abstractindex base indexes aldryn-search, means you'll need define url field since you're subclassing haystack's builtin index class not come fields predefined.

you can add so:

class eventindex(indexes.searchindex, indexes.indexable):     url = indexes.charfield(model_attr='get_absolute_url') 

or:

class eventindex(indexes.searchindex, indexes.indexable):     url = indexes.charfield()      def prepare_url(self, obj):         return obj.get_absolute_url() 

i recommend approach number 2 because approach number 1 behaves differently if provided attribute string has double underscores get__title woul event.get.title instead of event.get__title.

if event model supports multiple languages using libraries django-hvad or django-parler, highly recommend use aldrynindexbaseorabstractindexinstead of haystack'sindexes.searchindex```.


Comments