Добрый день,
Скажем, у меня есть models.py вот так:
class my_stackoverflow_question(models.Model):
feedback_choices = (
(GREAT, "Was a great question"),
(MEH, "Could've figured it out"),
(TERRIBLE, "I pity the foo"),
)
feedback = models.IntegerField(default=GREAT, choices=feedback_choices)
Мой search_indexes.py такой:
class question_index(indexes.SearchIndex, indexes.Indexable):
text = ...stuff...
feedback = indexes.IntegerField(model_attr='feedback', faceted=True)
Когда я показываю вышеуказанный аспект, целочисленное значение будет отображаться в шаблоне.
{% for feed in facets.fields.feedback %}
{{feed.0}} - {{feed.1}}
{% endfor %}
# Shows: 0-999
# 1-1
# 2-0 ;)
Я бы хотел, чтобы feed.0 отображал фактическое значение выбора, например obj.get_feedback_display(). Поэтому я подумал, что попробую подготовить данные перед индексацией:
def prepare_feedback(self, obj):
return obj.feedback.get_feedback_display() #'AttributeError: 'long' object has no attribute 'get_feedback_display''
или вернуть "%s" % (obj.feedback.get_feedback_display()) # Та же ошибка, что и выше
Я был бы даже в порядке, если бы данные были проиндексированы как целое число, а затем фасет feed.0 отображал имя, но я считаю, что поля фасета поступают прямо из индекса, а не из модели (это правильно?)
Как я могу отобразить display_name фасета, а не его исходное значение?
Спасибо!