Вы можете добиться этого с помощью словаря _group_by_full, чтобы добавить его в свой класс osv.osv.
Например, проверьте мой пример кода:
def _read_group_state_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
stage_obj = self.pool.get('produce.book.stage')
order = stage_obj._order
if read_group_order == 'stage_id desc':
order = "%s desc" % order
# perform search
stage_ids = stage_obj._search(cr, uid, [], order=order, access_rights_uid=access_rights_uid, context=context)
result = stage_obj.name_get(cr, access_rights_uid, stage_ids, context=context)
# restore order of the search
result.sort(lambda x, y: cmp(stage_ids.index(x[0]), stage_ids.index(y[0])))
fold = {}
for stage in stage_obj.browse(cr, access_rights_uid, stage_ids, context=context):
fold[stage.id] = stage.fold or False
return result, fold
_group_by_full = {
'stage_id': _read_group_state_ids
}
Результатом является список кортежей, содержащих (id, name), а fold - это словарь пары {id: bool}, что, если каждый из них будет истинным, этот столбец будет свернут.
person
NrNazifi
schedule
13.11.2014