擅长:python、mysql、java
<p>您应该重写<code>get_queryset</code>。这意味着您必须将筛选器放入<code>get_queryset</code>中,如下所示:</p>
<pre><code>@method_decorator(staff_member_required, name='dispatch')
class EmployeeListView(ListView):
model = Employee
paginate_by = 4
def dispatch(self, request, *args, **kwargs):
if not request.user.has_perm('employee.view_employee'):
return redirect(reverse_lazy('home'))
return super(EmployeeListView, self).dispatch(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['filter'] = EmployeeFilter(self.request.GET, queryset = self.get_queryset())
return context
def get_queryset(self):
queryset = super().get_queryset()
return EmployeeFilter(self.request.GET, queryset=queryset).qs
</code></pre>
<p>并在employee_list.html中使用<code>object_list</code>而不是<code>filter</code>,如下所示:</p>
<pre><code>{% for employee in object_list|dictsort:"id" reversed %}
</code></pre>