Моя база данных настроена со списком дел с идентификатором из нашей системы продажи билетов, местоположением, назначенным лицом и кратким описанием, взятым из билета:
- Case
- ID
- Местоположение
- Назначенное лицо
- Краткое описание
- Статус
Теперь, чтобы помочь лучше сортировать вещи, в зависимости от определенных значений состояния, мы меняем QuerySet после запроса.
current_active = Case.objects.filter(queue_num=0,status__lt=6)
for item in current_active:
if(item.location == 'NPH'):
item.assigned_tech = 'NPH'
elif(item.location == 'Bins'):
item.assigned_tech = 'Bins'
elif(item.status > '2' and item.status < '6'):
item.assigned_tech = 'Pending'
Мне было интересно, есть ли способ отсортировать этот новый модифицированный QuerySet. Мы знаем, что он печатается правильно, все сводится к сортировке, которая испортилась.
ОБНОВЛЕНИЕ 2
current_active = Case.objects.filter(queue_num=0,status__lt=6)
current_active_list = []
for item in current_active:
number = item.id
item.id = '%07d' % number
phone = item.myneuname.phonenumber
if(len(phone) > 7):
formattedPhone = phone[:-10]+' ('+phone[-10:-7]+') '+phone[-7:-4]+'-'+phone[-4:]
item.myneuname.phonenumber = formattedPhone
if(item.location == 'NPH'):
item.assigned_tech = 'NPH'
elif(item.location == 'Bins'):
item.assigned_tech = 'Bins'
elif(item.status > '2' and item.status < '6'):
item.assigned_tech = 'Pending'
current_active_list.append(item)
current_active_list.sort(key=lambda x: x.assigned_tech)
Хотя это не идея и не стиль Джанго, это работает. Если у вас возникла та же проблема и вы нашли более разумный способ ее устранения, не стесняйтесь отвечать. Создание списка Python казалось единственно возможным способом без сохранения данных.