Вы уверены, что используете haystack.generic_views.SearchView
и , а не haystack.views.SearchView
?Обратите внимание, что на https://django -haystack.readthedocs.io / en / latest / views_and_forms.html написано:
Начиная с версии 2.4, представления в haystack.views.SearchView не рекомендуется в пользу новых общих представлений в haystack.generic_views.SearchView, которые используют стандартные представления на основе классов Django, которые доступны в каждой версии Django, поддерживаемой Haystack.
Таким образом, есливы используете haystack.views.SearchView
, тогда get_context_data
из SingleTableMixin
никогда не будет вызван, поэтому table
не будет помещен в ваш контекст (т. е. table
будет пустым).На самом деле, поскольку мне не нравится поведение {% render_table %}
, когда его параметр пуст (он ведет себя иначе, чем другие теги / фильтры Django, то есть выдает исключение, в то время как django молча игнорирует это), я обычно помещаю его в некоторые проверки {% if table %}
.
ОБНОВЛЕНИЕ
Кажется, что по какой-либо причине данные не передаются в таблицу.Я не уверен, почему, я не могу проверить это прямо сейчас, но из быстрого взгляда на исходный код ваша реализация должна работать (учитывая, что SearchView имеет get_queryset
, а TableMixin
используетget_queryset
, чтобы получить его данные).В любом случае вы пытаетесь переопределить некоторые методы TableMixin
, чтобы убедиться, что таблица возвращена правильно (посмотрите TableMixin здесь: https://django -tables2.readthedocs.io / en / latest / _modules / django_tables2 /views.html ).
Я думаю, что наиболее определенным решением было бы просто укусить пулю и переопределить get_table
самостоятельно.Итак, попробуйте добавить что-то вроде этого в ваш класс:
def get_table(self, **kwargs):
table_class = self.get_table_class()
# I only change this line from the original to make sure that the self.get_queryset() is called to return the data
table = table_class(data=self.get_queryset(), **kwargs)
return RequestConfig(self.request, paginate=self.get_table_pagination(table)).configure(
table
)
Одна идея, которая только что возникла у меня в голове.Есть ли вероятность, что метод get_queryset()
SearchView
вернет None
из-за неправильной конфигурации или чего-то еще?