To be able to show a kanban view in a grouped by stage in a way where the group will always show regardless if there is a record in that stage or not, you can do the following.



On the stage field in the python file, add a group_expand='_compute_name_here' parameter to the field itself.


stage = fields.Selection([
    ('submitted', 'Submitted'),
    ('approved', 'Approved/Backlog'),
    ('assigned', 'In Development'),
    ('review', 'Review'),
    ('completed', 'Completed'),
    ('denied', 'Denied')
], string='Stage', default='submitted', track_visibility="onchange", group_expand='_read_group_stage2')


Then you will have to create a function for the group expand computation that you set in the parameter in the field. This will force all the stages to be shown in the kanban view regardless if there is a record or not.


def _read_group_stage2(self, stages, domain, order):
    return [key for key, val in type(self).stage.selection]

Screenshot Example: