Грани от многих ко многим полям не отображаются в шаблоне - PullRequest
0 голосов
/ 02 января 2019

Я пытался использовать огранку с Haystack на поле многие ко многим. Я перепробовал много вариантов, чтобы в итоге окончить дорогу. Я могу заставить его работать (по-видимому), как показано ниже через оболочку. Однако при внедрении в шаблон граненые поля не отображаются.

Извлечение из Джанго Шелл

  • из haystack.query import SearchQuerySet
  • sqs = SearchQuerySet (). Facet ('type')
  • sqs.facet_counts ()
  • {'fields': {'type': [('Soccer', 2), ('Basketball', 1), ('Golf', 1), ('Swim', 1)]}, 'date ': {},' query ': {}}

Поиск Index.py

class EventIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr='name')
owner = indexes.CharField(model_attr='user')
created_on = indexes.DateTimeField(model_attr='created_on')
type = indexes.MultiValueField(faceted=True)

def get_model(self):
return Event

def prepare_type(self, obj):
return [(t.name) for t in obj.type.all()]

def index_queryset(self, using=None):
return self.get_model().objects.prefetch_related('type').all()

Template

<!-- Begin faceting. -->
<div>
{% if facets.fields.type %}
<h5>Categories</h5>
{# Provide only the top 5 categories #}
{% for category in facets.fields.type|slice:":5" %}
<a href="{{ request.get_full_path }}&amp;selected_facets=type_exact:{{ type.0|urlencode }}">
{{ type.0 }}
</a>
({{ type.1 }})
{% endfor %}
{% else %}
<p>No categories.</p>
{% endif %}
</div>

event_text.txt

{{ object.name }}
{{ object.description }}
{% for type in event.type.all %}
{{ event.type }}
{% endfor %}

Я должен видеть различные типы как аспекты (футбол, баскетбол и т. Д.). Вместо этого я получаю только пустое значение.

Категория ()

Я полагаю, что что-то не так в моем шаблоне, я думаю, что я должен пройтись по Event.type, но я не могу понять это ...

Спасибо!

...