如何解决(haystack + elasticsearch) {{ result.object.get_absolute_url }} 不起作用我有 get_absolute_url() 方法
我的 haystack 和 elasticsearch 版本:
django-haystack==3.0
elasticsearch-5.3.3
我有 elastichsearch 和 haystack。我可以搜索,自动完成工作正常,但是当我获得搜索结果时,我无法点击任何链接,它们指向我所在的同一页面。
这是我的models.py:
class Product(TranslatableModel):
translations = TranslatedFields(
category = models.ForeignKey(Category,related_name = 'products',on_delete = models.CASCADE),name = models.CharField(max_length = 200,db_index = True),slug = models.SlugField(max_length = 200,db_index = True)
)
# image = models.ImageField(upload_to = 'products/%Y/%m/%d/',blank = True)
description = models.TextField(blank = True)
price = models.DecimalField(max_digits = 10,decimal_places = 2)
available = models.BooleanField(default = True)
created = models.DateField(auto_Now_add = True)
updated = models.DateField(auto_Now = True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('shop:product_detail',args = [self.id,self.slug])
这是我的 search_indexes.py:
from haystack import indexes
from . models import Product,ProductTranslation
class IndexProduct(indexes.SearchIndex,indexes.Indexable):
text = indexes.CharField(document=True,use_template=True)
description = indexes.CharField(model_attr = 'description')
def get_model(self):
return Product
class IndexProductTranslation(indexes.SearchIndex,indexes.Indexable):
text = indexes.CharField(document = True,use_template = True)
name = indexes.CharField(model_attr = 'name')
name_auto = indexes.EdgeNgramField(model_attr = 'name')
def get_model(self):
return ProductTranslation
我在 shell 中尝试了 get_absolute_url() 方法:
>>> from shop.models import Product
>>> p = Product.objects.latest('id')
>>> p.get_absolute_url()
'/uk/shop/10/test/detail/'
当我使用浏览器的检查器时,它的 href 属性中甚至没有任何内容:
这是我的 search.html 文件:
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% load thumbnail %}
{% block content %}
{% blocktrans with query as query %}
<h1>Results for '{{ query }}'</h1>
{% endblocktrans %}
<div id='main' class='product-list'>
{% if query %}
{% for result in page.object_list %}
<div class='item'>
{% if result.object.images.all %}
{% for image in result.object.images.all %}
<a href='{{ result.object.get_absolute_url }}'><img src="{% thumbnail image.img 300x300 %}" class = 'rounded'></a>
{% endfor %}
{% else %}
<a href='{{ result.object.get_absolute_url }}'><img src="{% static "images/no_image.png" %}" class = 'rounded'></a>
{% endif %}
<a href='{{ result.object.get_absolute_url }}'>{{ result.object.name }}</a>
</div>
{% empty %}
<h3>There are no results :(</h3>
{% endfor %}
{% endif %}
</div>
{% endblock %}
如果您需要任何其他信息,我会给您,谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。