Как использовать объекты, указанные менеджером, вместо объектов по умолчанию в представлении на основе классов или функций?

Мой код:

models.py

class EmployeeManager(models.Manager):
    def get_queryset(self):
        return super().get_queryset().exclude(employed=False)

class NotEmployedEmployee(models.Manager):
    def get_queryset(self):
        return super().get_queryset().filter(employed=False)

class Employee(models.Model):
    objects = EmployeeManager()
    not_employed = NotEmployedEmployees()
    name = models.CharField(max_length=250)
    employed = models.BooleanField(default=True, blank=True, null=True)

views.py

class EmployeeListView(ListView):
    model = Employee
    template_name = 'tmng/employee_list.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        resultset = EmployeeFilter(self.request.GET, queryset=self.get_queryset())
        context['filter'] = resultset
        return context


class EmployeeUpdateView(UpdateView):
    template_name = 'tmng/employee_update.html'
    model = Employee
    fields = '__all__'

    def form_valid(self, form):
        self.name = form.cleaned_data.get('name')
        return super().form_valid(form)

    def get_success_url(self):
        messages.success(self.request, f'Employee "{self.name}" changed!')
        return '/'  

Для всех моих работающих в настоящее время сотрудников мой список и представление обновления работают нормально. Но я также хочу иметь представление списка/обновления для моих неработающих сотрудников, чтобы я мог "реактивировать" их, когда они снова придут в компанию. Для представления списка я нашел полурешение, используя представление на основе функций.

views.py

def not_employed_employee_list_view(request, *args, **kwargs):
    template_path = 'tmng/employee_not_employed.html'
    context = {'employees': Employee.not_employed.all()}
    return render(request, template_path, context)

Итак, я ищу способ увидеть список/обновить неработающих сотрудников. Есть ли способ сказать представлениям на основе классов / функций, чтобы они использовали не сотрудников по умолчанию, а "не_занятых" сотрудников?

Я не создавал новых шаблонов, а просто создал новое представление списка на основе класса

class EmployeeNotEmployedListView(EmployeeListView, ListView):  

    def get_queryset(self):
        return Employee.not_employed.all()

Для представления обновления я обновил стандартное представление обновления сотрудника

class EmployeeUpdateView(UpdateView):
    template_name = 'tmng/employee_update.html'
    model = Employee
    fields = '__all__'

    def get_queryset(self):
        return Employee.objects.all() | Employee.not_employed.all()

    def form_valid(self, form):
        self.name = form.cleaned_data.get('name')
        return super().form_valid(form)

    def get_success_url(self):
        messages.success(self.request, f'Employee "{self.name}" changed!')
        return '/' 
Вернуться на верх