Как показать значения состояния c в kanban просмотре Odoo10? - PullRequest
1 голос
/ 03 августа 2020

У меня есть state поле, которое является полем Selection. Я хочу сгруппировать записи на основе этого поля state в представлении kanban.

вот мой код:

* .py

  state = fields.Selection([('draft','Draft'),('process','Processing')
        ,('intransit','In-transit'),('done','Delivered'),('cancel','Canceled')],
        default="draft",string="Status", track_visibility="onchange",
        group_expand='_expand_states',index=True)

  @api.model
  def _expand_states(self, states, domain, order):
      return [key for key, val in type(self).state.selection]

Но я получаю эту ошибку:

> Traceback (most recent call last):
  File "/home/user/Projects/odoo-10/odoo/http.py", line 642, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/home/user/Projects/odoo-10/odoo/http.py", line 684, in dispatch
    result = self._call_function(**self.params)
  File "/home/user/Projects/odoo-10/odoo/http.py", line 334, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/home/user/Projects/odoo-10/odoo/service/model.py", line 101, in wrapper
    return f(dbname, *args, **kwargs)
  File "/home/user/Projects/odoo-10/odoo/http.py", line 327, in checked_call
    result = self.endpoint(*a, **kw)
  File "/home/user/Projects/odoo-10/odoo/http.py", line 942, in __call__
    return self.method(*args, **kw)
  File "/home/user/Projects/odoo-10/odoo/http.py", line 507, in response_wrap
    response = f(*args, **kw)
  File "/home/user/Projects/odoo-10/odoo/addons/web/controllers/main.py", line 895, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/home/user/Projects/odoo-10/odoo/addons/web/controllers/main.py", line 887, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/home/user/Projects/odoo-10/odoo/api.py", line 687, in call_kw
    return call_kw_model(method, model, args, kwargs)
  File "/home/user/Projects/odoo-10/odoo/api.py", line 672, in call_kw_model
    result = method(recs, *args, **kwargs)
  File "/home/user/Projects/odoo-10/odoo/models.py", line 1939, in read_group
    result = self._read_group_raw(domain, fields, groupby, offset=offset, limit=limit, orderby=orderby, lazy=lazy)
  File "/home/user/Projects/odoo-10/odoo/models.py", line 2052, in _read_group_raw
    aggregated_fields, count_field, result, read_group_order=order,
  File "/home/user/Projects/odoo-10/odoo/models.py", line 1680, in _read_group_fill_results
    groups = self.env[field.comodel_name].browse(group_ids)
  File "/home/user/Projects/odoo-10/odoo/api.py", line 760, in __getitem__
    return self.registry[model_name]._browse((), self)
  File "/home/user/Projects/odoo-10/odoo/modules/registry.py", line 177, in __getitem__
    return self.models[model_name]
KeyError: None

Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Согласно документации исходного кода , метод, определенный в group_expand, должен возвращать список всех агрегированных значений, которые мы хотим отобразить для этого поля, в форме m2o-подобной пары (ключ , label).

Метод _read_group_fill_results всегда будет пытаться получить comodel_name поля для создания групп, и поскольку comodel_name не определен для полей выбора, Odoo вызовет KeyError: None.

К сожалению, возвращение списка значений , которые будут использоваться в качестве групп, доступно с Odoo-11.

0 голосов
/ 03 августа 2020

Вы поместили default_group_by = "state" в xml файл, где тег kanban размещен как атрибут. Удалите метод group_expand и удалите атрибут из поля, потому что это поле выбора, поэтому вам не нужно возвращать идентификаторы, просто поместите атрибут default_group_by = "state" в файл xml, и вы увидите результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...