简体   繁体   中英

python how to sort a list

i have to display a list shift wise like have to first show all day shift results then afternoon then night but now it shows afternoon first then night then day here is my code

views.py:

    def get_queryset(self):
    getall = self.request.GET.get("getall")

    if self.request.user:
        versions = LogVersion.objects.filter(
            form__airport__id=self.request.user.aerosimple_user.airport_id
        ).exclude(status=DRAFT)
        filters = self.request.GET.get("filters")
        tags = self.request.GET.get("tags")

        logs = Log.objects.none()
        result = Log.objects.none()

        for v in versions:
            if len(v.operation_logs.order_by('-id').all())>0:
                result = result | v.operation_logs.order_by('-id').all()
                result = result.exclude(shift_name = None).exclude(shift_name='')

    # if getall:
        if getall:
            return  Log.objects.filter(
            form__form__airport__id=self.request.user.aerosimple_user.airport.id)
        if filters is not None:
            filters = filters[:-2] if filters[-2:] == ',,' else filters
            filters_list = filters.split(',,')
            for filters in filters_list:
                log = result.filter(Q(type = filters) | Q(subtype = filters))
                if filters == 'Inspection Completed':
                    log = result.filter(Q(description = filters))
                elif log != []:
                    for r in result:
                        if r.tags is not None and filters in r.tags:
                            log  =result.filter(id=r.id)
                else:
                    log = result.filter(Q(type = filters) | Q(subtype = filters))
                logs = logs | log
            return logs.all()
        return result

how to sort it correctly

Example:

logs = sorted(logs, key=lambda x: dict(day=1, afternoon=2, night=3)[x.shift])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM