如何查看通过django-table2指定的用户的数据?

问题描述

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

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

解决方法

您可以像下面那样覆盖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