[英]Django haystack, no url in search results
I have haystack + django + aldryn-search setup for searches on my django-cms project.我有 haystack + django + aldryn-search 设置用于搜索我的 django-cms 项目。 I am trying to get indexes on my models to work, I can see results and the text description is fine, but the urls are always
/search/none
.我正在尝试使我的模型上的索引正常工作,我可以看到结果并且文本描述很好,但 url 总是
/search/none
。 How would I override the url definition?我将如何覆盖 url 定义?
search_indexes.py: search_indexes.py:
import datetime
from haystack import indexes
from .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 the entire index for model is updated."
return self.get_model().objects.order_by('created')
models.py模型.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 the AldrynIndexBase
or AbstractIndex
base indexes from aldryn-search
, this means you'll need to define the url field since you're subclassing haystack's builtin index class which does not come with any fields predefined.我看到您没有从
aldryn-search
子类化AldrynIndexBase
或AbstractIndex
aldryn-search
,这意味着您需要定义 url 字段,因为您要子类化 haystack 的内置索引类,该类没有预定义任何字段。
You can easily add it like 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 two because approach number one behaves differently if the provided attribute string has double underscores like get__title woul look for event.get.title instead of event.get__title.我推荐方法二,因为如果提供的属性字符串有双下划线,如 get__title 将查找 event.get.title 而不是 event.get__title,方法一的行为会有所不同。
If your Event
model supports multiple languages using libraries like django-hvad or django-parler, I highly recommend you use AldrynIndexBase or
AbstractIndex instead of haystack's
indexes.SearchIndex```.如果您的
Event
模型使用 django-hvad 或 django-parler 等库支持多种语言,我强烈建议您使用 AldrynIndexBase or
AbstractIndex instead of haystack's
index.SearchIndex```。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.