【问题标题】:how to see data of user specified through django-table2?如何查看通过 django-tables2 指定的用户数据?
【发布时间】:2020-09-09 08:16:09
【问题描述】:

您好,我想制作一张表,其中只能看到他创建的行,而不能看到其他行,所以我为每个行指定了一个用户 以前我是这样用的-

def see(request):
    as=A.objects.filter(user=request.user)
    return render(request,'m/see.html',{'as':as})

这工作得很好,后来我通过 Django 表 2 渲染了一个表 我的表 .py 是

class ATable(tables.Table):
    class Meta:
        model = A
        exclude = ('aid',)
        per_page = 2

我想让它特定于用户,以便我只能看到从 myuserid 输入的数据,而不是全部 我的 filter.py 代码是

class AFilter(df.FilterSet):
    class Meta:
        model = A
        exclude = ('aid',)

请帮助我应该写什么和在哪里指定用户

更新-Views.py

class AList(PagedFilteredTableView):
    model = A
    template_name = "m/see.html"
    table_class = ATable
    filter_class = AFilter
    formhelper_class = AListFormHelper

Utils.py

from django_tables2 import SingleTableView
from django_tables2.config import RequestConfig

class PagedFilteredTableView(SingleTableView):
    filter_class = None
    formhelper_class = None
    context_filter_name = 'filter'

    def get_queryset(self, **kwargs):
        qs = super(PagedFilteredTableView, self).get_queryset()
        self.filter = self.filter_class(self.request.GET, queryset=qs)
        self.filter.form.helper = self.formhelper_class()
        return self.filter.qs

    def get_context_data(self, **kwargs):
        context = super(PagedFilteredTableView, self).get_context_data()
        context[self.context_filter_name] = self.filter
        return context

【问题讨论】:

  • PagedFilteredTableView 是否继承自 SingleTableView ?
  • yes class PagedFilteredTableView(SingleTableView): 我也应该输入那个代码吗?在问题中更新

标签: django django-models django-filter django-tables2


【解决方案1】:

您可以像下面这样覆盖get_queryset 方法。

class AList(PagedFilteredTableView):
    model = A
    template_name = "m/see.html"
    table_class = ATable
    filter_class = AFilter
    formhelper_class = AListFormHelper

    def get_queryset(self, **kwargs):
        qs = super(AList, self).get_queryset()
        qs = qs.filter(user=self.request.user)
        return qs

【讨论】:

  • 没有帮助相同的结果,我可以看到所有行。
  • 您能否打印查询并查看查询中的内容。打印(qs.query)
  • 对不起,我是这个领域的新人,请指导如何做到这一点
  • 你可以使用像realpython.com/python-debugging-pdb这样的调试工具,或者IDE应该集成调试工具。顺便说一句,模型 A 有用户字段吗?
  • 是的模型 A 有用户字段- user=models.ForeignKey(User, on_delete=models.CASCADE,null=True)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
  • 2016-10-23
  • 1970-01-01
  • 2014-10-30
相关资源
最近更新 更多