Hello i want to make a table where one can see only his created rows and not others so i have specified a user for everyrow previously i used it like this -
def see(request):
as=A.objects.filter(user=request.user)
return render(request,'m/see.html',{'as':as})
this was working perfectly fine later i rendered a table through Django table 2 my tables .py is
class ATable(tables.Table):
class Meta:
model = A
exclude = ('aid',)
per_page = 2
i want to make it user specific so that i can only see data entered from myuserid not all my filter.py code is
class AFilter(df.FilterSet):
class Meta:
model = A
exclude = ('aid',)
kindly help what and where should i write to specify the user
Updated- 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
You can override get_queryset
method like following.
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