У меня есть набор записей партнеров. Теперь я хочу заказать этот набор записей двумя атрибутами. Один из этих атрибутов - простой Char
, но другой - Many2one
, что является проблемой.Как заказать по двум полям в Odoo 8?
Пример (предположим, что переменная partners
является записей):
- Это работает:
partners.sorted(key=lambda r: r.name)
(сChar
проблем нет). - Это не работает:
partners.sorted(key=lambda r: r.country_id)
(сMany2one
, вы должны добавить атрибут другой модели). - Это работает:
partners.sorted(key=lambda r: r.country_id.id)
(теперь мы указали атрибутres.country
, набор записей упорядочен правильно).
Проблема в следующем: мне нужно заказать два поля, как я писал выше. Для этого, кажется, что я должен использовать itemgetter
, но:
- Это не работает:
partners.sorted(key=itemgetter('name', 'country_id'))
(country_id
игнорируется, а когда я попытался заказать только этот выше). - Это дает ошибку:
partners.sorted(key=itemgetter('name', 'country_id.id'))
(сообщение об ошибкеcountry_id.id
не является полемres.partner
). - Это похоже на работу:
partners.sorted(key=itemgetter('name', 'phone'))
(поскольку оба поля:Char
).
Я также попытался связать два отсортированных в ряд, таким образом:
partners.sorted(key=lambda r: r.name).sorted(key=lambda r: r.country_id.id)
Но это не работает ни, потому что вторая sorted
функция портит результат первого.
Может ли кто-нибудь помочь мне с этим, пожалуйста?
Спасибо вам большое! Оно работает! – forvas