2015-06-16 4 views
0

Я не могу понять поведение API-интерфейса Odoo. Это сводит меня с ума.Как заказать булевское поле в Odoo?

Как вы знаете, если вы хотите заказать модель по некоторым полям, вам необходимо изменить атрибут _order модели. Он работает нормально.

Теперь предположим, что вы хотите заказать определенный вид по некоторым полям, не изменяя нормальный порядок модели (это означает: упорядочить определенный вид по некоторым полям и остальным представлениям той же модели другими полями) ,

В этом случае вы должны использовать XML-код, указав атрибут default_order в теге kanban или tree, в зависимости от того, какой вид вы изменяете.

Я использовал это в прошлом успешно. Поэтому я хотел применить это снова к просмотру канбана (на этот раз я хочу заказать поле boolean, char и еще char).

Теперь мое удивление: заказ boolean поле меняет порядок следующих полей, если он принимает значения False.

например. У нас есть 6 записей, которые мы хотим заказать логическим именем, именем и фамилией; в целях канбан с default_order:

  • Правда, Джон Доу
  • Правда, Джейн Доу
  • Правда, Джон, Xoe
  • Ложные, Джон, Die
  • Ложные, Джейн, Die
  • Ложные, Джейн, Се

Таким образом, в данном примере, по мнению канбан мы увидим их упорядоченный тыс является способом:

  1. Правда, Джейн Доу
  2. Правда, Джон Доу
  3. Правда, Джон, Xoe
  4. Ложные, Джон, Die
  5. Ложные, Джейн, Се
  6. Ложные , Jane, Die

Как вы можете видеть, если логические значения True, записи упорядочены по boolean, имя и фамилия, что я и хочу. Но если он принимает значение False, то записи упорядочиваются по boolean, имя DESC, фамилия DESC.

Что происходит? Вы испытывали то же самое?Как я могу заказать по boolean, затем char, а затем еще char ??

ответ

1

Один из методов, которые я использую для нечетной сортировки, использует контекст для управления им. В окне действий по мнению канбан, добавить контекст как

<field name="context">{'do_my_special_sort': True}</field> 

, а затем на модели, переопределить метод поиска, проверить этот флаг в контексте и установить порядок сортировки.

+0

Большое спасибо @Adrian! Это хороший способ справиться с этим. Но в моем случае представление kanban находится внутри поля 'one2many' внутри формы (это точно такой же случай, как поле' child_ids' в представлении формы 'res.partner'). Поэтому мне нужно изменить контекст в действии, которое вызывает форму, не так ли? И тогда будет ли порядок поиска влиять на представление канбана внутри поля? – forvas

+0

Вы должны просто указать контекст на определение , но вам может понадобиться попробовать несколько вещей. –

+0

Он работает с контекстом в поле. Обходной путь, который я сделал ранее, создавал другое поле типа «Char», которое вычислялось в зависимости от логического поля и «store = True». Этот символ «Char» сохранил значение булева, преобразованное в строку. Итак, в канбане я смог заказать булевым через этот «Чар». Но я думаю, что ваше решение более быстрое и лучшее. Благодарю вас @Adrian! – forvas

Смежные вопросы