UnboundLocalError和类型错误在Django

问题描述 投票:0回答:1

我得到的错误。

UnboundLocalError在/时间表/报告/局部变量“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=Noneexcept这样的事情

except TimesheetEntry.DoesNotExist:
            qs = None

然后我得到的错误是这样

类型错误在/时间表/报告/类型的对象“NoneType”没有LEN()

我怎样才能返回None

django django-models django-forms django-templates django-views
1个回答
1
投票

你可以通过无查询集像下面link

except TimesheetEntry.DoesNotExist:
       qs = TimesheetEntry.objects.none()
© www.soinside.com 2019 - 2024. All rights reserved.