Доступ к искомому слову в фильтрах через класс Table
Друзья, у меня есть таблица (django-tables2) и фильтр поиска под названием 'comment'. (django-filters)
Я хочу получить доступ к искомому слову внутри класса Table. Например, в событии qs() или где-то еще, я передаю его в запрос, чтобы получить доступ к нему на другой стороне в классе Table.
class CommentFilter(FilterSet):
class Meta:
model = Comments
fields = ['comment']
@property
def qs(self):
parent = super().qs
# here I want to pass it
search_key=self.data.get('comment')
return parent
Класс таблицы :
class CommentTable(tables.Table):
def render_comment(self, record):
# access here like self.request.GET.get('search_key')
return record.comment
После поисков вдоль и поперек и, конечно, с помощью друга, я нашел ответ и помещу его здесь, чтобы, если кому-то понадобится в будущем, его можно было использовать :
Во-первых: В классе фильтра я ввел search_key в качестве свойства
def __init__(self, *args, **kwargs):
super(SearchCommentFilter, self).__init__(*args, **kwargs)
self.search_key = self.data.get('comment', '')
После этого я читаю его и отправляю в класс таблицы в представлении
def get_table(self, **kwargs):
table = super().get_table(**kwargs)
filterset = self.get_filterset(self.filterset_class)
search_key = getattr(filterset, 'search_key', None)
table.search_key = search_key
return table
Наконец, я использовал его в классе таблицы
def render_comment(self, record):
search_key = getattr(self, 'search_key', None)
return record.comment.replace(search_key, f"<mark>{search_key}</mark>")