![](/img/trans.png)
[英]How to sort position stages using default_group_by field selection of kanban view in Odoo 12
[英]How to display all stages (even empty ones) of a selection field in Kanban view in Odoo 10?
我正在嘗試在Odoo 10 的看板視圖中顯示定義為選擇字段的模型的階段。 但是當我在看板視圖中添加階段字段時,其中包含記錄的階段會顯示在看板視圖中,但不是所有階段。
我有一個包含 3 個階段和看板視圖的選擇字段。 我在我的 xml 中使用了波紋管代碼來在看板視圖中顯示他們的階段。
這是我的選擇字段:
stage = fields.Selection([
('not reviewed', 'Not Reviewed'),
('review in progress', 'Review In Progress'),
('review complete', 'Review Complete')
], default='not reviewed')
有xml部分,我使用看板視圖中的選擇字段在視圖中顯示:
<record id="sources_daily_review_kanban_view" model="ir.ui.view">
<field name="name">Daily Sources Review Kanban</field>
<field name="model">daily.source.review</field>
<field name="arch" type="xml">
<kanban default_group_by="stage" class="o_kanban_small_column o_opportunity_kanban">
<field name="stage" options='{"group_by_tooltip": {"requirments": "Description", "legend_priority": "Use of stars"}}'/>
<field name="color"/>
<field name="name"/>
<field name="description"/>
<field name="responsible"/>
<field name="active"/>
<field name="source_date"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="#{kanban_color(record.color.raw_value)} oe_kanban_global_click">
<div class="o_dropdown_kanban dropdown">
<a class="dropdown-toggle btn" data-toggle="dropdown" href="#">
<span class="fa fa-bars fa-log"/>
</a>
<ul class="dropdown-menu" role="menu" area-labelledby="dLabel">
<t t-if="widget.editable"><li><a type="edit">Edit</a></li></t>
<t t-if="widget.deletable"><li><a type="delete">Delete</a></li></t>
<li t-if="! record.active.value"><a name="action_set_active" type="object">Unarchive</a></li>
<li t-if="record.active.value"><a name="action_set_unactive" type="object">Archive</a></li>
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
</ul>
</div>
<div class="oe_kanban_content">
<div>
<field name="tag_ids"/>
</div>
<div>
<strong><field name="name" domain="[('including_in_daily_review', '=', True)]"/></strong>
</div>
<div>
<field name="description"/>
</div>
<div>
<field name="responsible"/>
</div>
<div class="oe_kanban_footer">
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
此代碼僅顯示該階段中有記錄的那些階段,而我希望顯示所有階段,即使是空的階段。 我搜索了很多,找到了與此問題相關的https://stackoverflow.com/a/40761734/2498426解決方案。 但我的情況不清楚(選擇字段)。
它在 Python 文件中對我有用:
state = fields.Selection([('en_cours_confirmation', 'En Cours de Confirmation'), ('confirmer', 'Confirmé'), ('annuler', 'Annulé')]
, default='en_cours_confirmation', string="Status", group_expand='_expand_states', index=True)
def _expand_states(self, states, domain, order):
return [key for key, val in type(self).state.selection]
在 XML 文件中:
...<kanban colors="blue:state=='en_cours_confirmation';red:state=='annuler';grey:state=='confirmer'" default_group_by="state">...
使用 group expand 參數在 hr_contract 模塊中找到了一個很好的例子
stage = fields.Selection([
('not reviewed', 'Not Reviewed'),
('review in progress', 'Review In Progress'),
('review complete', 'Review Complete')
], default='not reviewed',group_expand='_expand_states')
def _expand_states(self, states, domain, order):
return [key for key, val in type(self).state.selection]
我嘗試通過在 Odoo10 中應用Explorer解決方案來實現靜態階段,並且也在 Odoo12 中發現了此功能,但它在 Odoo10 中不起作用。 所以,我使用波紋管技術即使在看板視圖中有空列也有靜態和固定階段:
首先,我定義了一個新模型,如下所示:
class CheckListStage(models.Model):
_name = "checklist.stage"
_rec_name = "name"
_sequence = "sequence, name, id"
name = fields.Text(string='Name', required=True, translate=True)
sequence = fields.Integer('Sequence', default=1, help='Used to order stages. Lower is better.')
然后我在這個模型中添加了 3 條記錄作為 xml 中的數據文件:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="stage_not_reviewed" model="checklist.stage">
<field name="name">Not Review</field>
<field name="sequence">1</field>
</record>
<record id="stage_review_in_progress" model="checklist.stage">
<field name="name">Review In Progress</field>
<field name="sequence">2</field>
</record>
<record id="stage_review_complete" model="checklist.stage">
<field name="name">Review Complete</field>
<field name="sequence">3</field>
</record>
</data>
</odoo>
為了將checklist.stage模型的記錄作為模型的看板視圖中的階段,我使用了一個 Many2one 字段,如下所示,帶有group_expand
以在看板視圖中包含所有階段:
stage = fields.Many2one('checklist.stage', group_expand='_expand_stages', default=lambda self: self._default_stage())
對於 group_expand 我使用以下代碼作為 _expand_satages 方法:
def _expand_stages(self, states, domain, order):
stage_ids = self.env['checklist.stage'].search([])
return stage_ids
最后在看板視圖中,我剛剛向看板元素添加了default_group_by="stage"
和group_create="false"
。 雖然,它有點長,但它在我的情況下工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.