python - Django 表 2 - 如何更改我正在显示的模型的查询集?
问题描述
我试图在使用 django-tables2 的表中获取请求后显示所有模型对象。它目前正在显示所有内容,我无法弄清楚如何根据模型 pk 在我的视图中过滤查询集:
视图.py
class ViewJob(LoginRequiredMixin, SingleTableView):
model = JobResults
table_class = JobResultsTable
template_name = 'app/viewjobresults.html'
paginator_class = LazyPaginator
table_pagination = {"per_page": 30}
def get_context_data(self, **kwargs):
""" ViewJob get_context_data request """
context = super(ViewJob, self).get_context_data(**kwargs)
print("ViewJob >get_context_data()")
context['job_obj'] = Job.objects.get(pk=self.kwargs.get('pk'))
# context['object_list'] = context['object_list'].filter(job_id=context['job_obj'].id)
return context
模板 - app/viewjobresults.html
{% extends "base.html" %}
{% load render_table from django_tables2 %}
{% render_table table %}
{% endblock %}
表格.py
class JobResultsTable(tables.Table):
job = tables.Column(
accessor='job_id.job_name',
verbose_name='Job')
results = tables.Column(
accessor='results',
verbose_name='Result')
class Meta:
attrs = {"class": "table is-bordered"}
当前呈现的表是查询集中的所有作业对象。我在视图 get_context_data() 中有特定的 job_obj 来过滤它,但是当我过滤 context['object_list'] (行散列)时,它仍然显示整个 JobResults 列表。如何更改给定表的查询集?
解决方案
您可以使用该get_table_data()
方法来修改您的查询集。
class ViewJob(LoginRequiredMixin, SingleTableView):
def get_table_data(self):
job_pk = self.request.GET.get('pk')
if job_pk:
return Job.objects.get(pk=job_pk)
else:
return Job.objects.all()
https://django-tables2.readthedocs.io/en/latest/pages/generic-mixins.html
推荐阅读
- r - 访问随机森林 sparkR 中的概率对象列
- python - 当猴子修补其构造函数时,pandas DataFrame 处于“边缘”状态
- python - 移动绘图散景工具
- apache-nifi - Nifi 导入大数据文件
- python - 改进循环发送正确数据的方法
- c# - 如何让游戏对象移动到定义的位置
- ios - 如何在 Swift UI 的滚动视图中显示全文
- ggplot2 - 如何从雷达图中删除面板网格主要外线的外线?
- spring - spring @MockBean HttpSession - 没有可用的“javax.servlet.http.HttpSession”类型的限定bean
- django - OperationalError at / no such table: blog_post_categories