UnboundLocalError и TypeError в Django - PullRequest
0 голосов
/ 05 февраля 2019

Я получаю ошибку.

UnboundLocalError в / timesheet / report / local variable 'qs', на которую есть ссылка перед присваиванием

class ReportView(LoginRequiredMixin, generic.ListView):
    template_name = 'report/report.html'
    paginate_by = constants.PAGINATED_NUMBER
    context_object_name = 'reports'

    def get_queryset(self, *args, **kwargs):

        try:

            timesheet_latest_ids = TimesheetEntry.objects.raw('SELECT MAX(id) as id FROM timesheet_entry WHERE timesheet_is_running = 0 GROUP BY timesheet_users_id ORDER BY timesheet_clock_out_on DESC')
            list1 = []
            for timesheet_latest_id in timesheet_latest_ids:
                list1.append(timesheet_latest_id.id)
            result = TimesheetEntry.objects.filter(id__in=list1)


            if self.request.user.userprofile.user_role.id == 2 : # 2 for admin 
                qs =  TimesheetEntry.objects.filter(
                        id__in=list1
                    ).filter(
                        timesheet_users__userprofile__user_company=self.request.user.userprofile.user_company
                    )

            if self.request.user.userprofile.user_role.id == 3 : # 3 for manager
                qs =  TimesheetEntry.objects.filter(
                        id__in=list1
                    ).filter(
                        timesheet_users__userprofile__user_company=self.request.user.userprofile.user_company
                    ).exclude(timesheet_users__userprofile__user_role_id=3) | TimesheetEntry.objects.filter(timesheet_users__pk=self.request.user.pk)

            if self.request.user.userprofile.user_role.id == 4 : # 4 for employee
                qs =  TimesheetEntry.objects.filter(timesheet_users=self.request.user.id).latest('id')

        except TimesheetEntry.DoesNotExist:
            qs=None

        return qs

Если я поставлю qs=None в except как-то так

except TimesheetEntry.DoesNotExist:
            qs = None

Тогда я получаю ошибку, подобную этой

Ошибка типа в / табель / отчет / объект типа 'NoneType' не имеет len ()

Как я могу вернуть Нет

1 Ответ

0 голосов
/ 05 февраля 2019

Вы можете передать Ни один набор запросов, как показано ниже ссылка

except TimesheetEntry.DoesNotExist:
       qs = TimesheetEntry.objects.none()
...