#odoo #qweb
#odoo #qweb
Вопрос:
Я пытаюсь вызвать метод sort () и функцию sorted (), но это не работает.
Вызов функции sorted() :
<t t-set='data' t-value="{4: 'd', 3: 'c', 'b': 2, 'a': 1}"/>
<t t-set="list_key" t-value="sorted(list(data.keys()))"/>
<t t-esc="list_key"/>
Но это выдает мне ошибку типа :
Ошибка при рендеринге при компиляции AST TypeError: объект ‘NoneType’ не вызывается
Вызов метода sort():
<t t-set='data' t-value="{4: 'd', 3: 'c', 'b': 2, 'a': 1}"/>
<t t-set="list_key" t-value="list(data.keys()).sort()"/>
<t t-esc="list_key"/>
Это не выдает ошибки, но когда я пытаюсь получить доступ к одному элементу list_key, я получаю эту ошибку :
Ошибка при рендеринге при компиляции AST TypeError: объект ‘NoneType’ не поддается подписке
Вы можете мне помочь? Спасибо вам.
Комментарии:
1. [решено], создаем метод внутри модели, затем вызываем его в qweb
2. Можете ли вы включить свое решение в качестве полного ответа (с вашим рабочим кодом) на случай, если у кого-нибудь возникнет такая же проблема в будущем?
3. класс TheModel (модели. Модель): _inherit = ‘the.model’ @api.multi def sort_key(self, k): возвращает отсортированную(k)
4. боже, я не знаю, как отформатировать это внутри комментария
Ответ №1:
Я не знаю, зачем вам понадобилось создавать метод сортировки внутри вашего определения модели, поскольку sorted
метод уже предусмотрен для применения к набору записей, также может быть использован внутри qweb. Например, эта строка взята из кода сообщества odoo:
<t t-foreach="move.move_line_ids.sorted(key=lambda ml: ml.location_id.id)" t-as="ml">
Для получения дополнительной информации о sorted
методе odoo ORM вы можете прочитать официальную документацию.
Комментарии:
1. Потому что в моем случае я использую не объект из Odoo ORM, а переменные python, которые я передаю через данные в отчете. Я пытаюсь использовать метод sorted (), но он не работает.