#odoo
Вопрос:
Я использую приведенный ниже код для сортировки. Все работает нормально до 1999 года. E1000 где-то прячется и не является частью сортировки.
_order= ‘код сотрудника по запросу’
Комментарии:
1. какой код для первого сотрудника? это E1 или E001?
2. Извините за задержку с ответом. Это E001
Ответ №1:
Записи сортируются на основе сравнения строк. Он сравнивает первые символы, и если они равны, сравнивается второй символ и так далее.
В вашем случае сравнение работает только с E999, потому что следующий код содержит на один символ больше, чем все предыдущие коды.
При сравнении E1000 с E999 первый код меньше, потому что второй символ первого кода меньше.
Порядок кодов будет таким: E098, E099, E100, E1000, E101, E102
В меньшем масштабе вы можете увидеть ту же ситуацию здесь:
x = ['E01', 'E02', 'E22', 'E99', 'E100', 'E10', 'E11']
x.sort()
print(x)
Выход:
['E01', 'E02', 'E10', 'E100', 'E11', 'E22', 'E99']
Итак, чтобы решить эту проблему, вам просто нужно увеличить длину кода (добавив 0 перед числом, если оно короткое), чтобы он всегда имел одинаковую длину для всех кодов.