Как я могу устранить проблему с сортировкой в Odoo?

#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 перед числом, если оно короткое), чтобы он всегда имел одинаковую длину для всех кодов.