我知道问题很老了 但我也有同样的问题 我还有信息要分享
跳到“ 强” 解答 < / 强” 。
说你有这个模型:
class School(models.Model):
city = models.CharField(max_length=50)
name = models.CharField(max_length=50)
slug = models.SlugField(max_length=50, unique=True)
cover = models.ImageField(upload_to= images/school-covers/ )
您可以看到“ 坚固” 图像字段 < / 坚固” : 封面 。
如果您想要用自动完成功能用 Haystack 索引学校模式, 您应该这样做 :
class SchoolIndex(indexes.SearchIndex, indexes.Indexable):
name = indexes.EdgeNgramField(model_attr= name )
city = indexes.EdgeNgramField(model_attr= city )
slug = indexes.CharField(model_attr= slug )
def get_model(self):
return School
def index_queryset(self, using=None):
# Used when the entire index for model is updated.
return self.get_model().objects.all()
您可以看到,我没有包括图像字段,因为图像字段对象不是 indexs
软件包的一部分。
此代码片段将使用学校模式的 < code> name code > 和 < code> ential code> 字段索引。 在您的 AJAX 视图中, 您将使用搜索查询设置处理搜索 :
def search_ecoles(request):
name = SearchQuerySet().autocomplete(name=request.POST.get( search_text , ))
city = SearchQuerySet().autocomplete(city=request.POST.get( search_text , ))
schools = name | city
return render(request, website/ajax_search.html , { schools : schools})
至今为止,我能够在我的模板中 访问结果,像这样:
<ul>
{% for school in schools %}
<li>
<span id="name"><a href="/school/{{ school.slug }}/">{{ school.name }}</a></span>
<span id="city">City: {{ school.city }}</span>
</li>
{% endfor %}
</ul>
Solution
但也许你喜欢访问封面图像字段。 最简单和可能更整洁的方法就是 使用校内物体,就像这样:
<img src="{{ school.object.cover.url }}" />