【发布时间】:2020-01-22 05:21:09
【问题描述】:
我正在尝试根据请求的用户名更改表格视图,但它不断返回 AttributeError,因为表格对象没有属性“请求”。我已直接将请求添加到表中(请参阅下面的代码),但仍然无法完成。在我的表类中,我重写了“get_top_pinned_data”以根据用户名从数据库中获取数据。
views.py
class ListView(LoginRequiredMixin, ExportMixin, SingleTableView):
...
def get_context_data(self, **kwargs):
context = super(ListView, self).get_context_data(**kwargs)
table = self.get_table(**self.get_table_kwargs())
table.request = self.request # ADDING REQUEST DIRECTLY TO TABLE
context[self.context_filter_name] = self.filter
context['firstname'] = str(self.request.user.first_name)
return context
def get_table(self, **kwargs):
table_class = self.get_table_class()
table = table_class(data=self.get_table_data(), **kwargs)
return RequestConfig(self.request, paginate={'per_page':self.paginate_by}).configure(
table
)
tables.py
class Table(tables.Table):
...
def get_top_pinned_data(self):
id_list = MODEL.objects.filter(USERNAME=self.request.user.username).values_list('id', flat=True)
pinned = MODEL.objects.filter(id__in=id_list)
return pinned
谁能帮帮我?
**编辑:在 get_table 函数中向表添加请求
views.py
class ListView(LoginRequiredMixin, ExportMixin, SingleTableView):
...
def get_context_data(self, **kwargs):
context = super(ListView, self).get_context_data(**kwargs)
context[self.context_filter_name] = self.filter
context['firstname'] = str(self.request.user.first_name)
return context
def get_table(self, **kwargs):
table_class = self.get_table_class()
table = table_class(data=self.get_table_data(), **kwargs)
table.request = self.request
return RequestConfig(self.request, paginate={'per_page':self.paginate_by}).configure(
table
)
【问题讨论】:
标签: django django-tables2