圖形視圖
圖形視圖允許聚合的概述和模型的分析,它們的根元素是 <graph>
。
注
數據透視圖(元素<pivot>)是一個多維表,它允許選擇文件和維度來獲得正確的聚合數據集,然后移動到更為圖形化的概觀。數據透視圖共享與圖視圖相同的內容定義。
圖形視圖有4種顯示模式,默認模式是使用@typ屬性來選擇的。
- 柱狀圖(默認的)
-
柱狀圖,第一維用於定義水平軸上的組,其他維度定義每個組內的聚合條。
默認情況下,柱狀圖是並排的,它們可以通過使用@stacked="True"在<graph>上進行堆疊
- 曲線圖
- 二維線圖
- 餅圖
- 二維的餅圖
圖形視圖包含具有強制@type屬性的<field>值:
-
row
(默認的) - 默認情況下應聚合字段
-
measure
- 字段應該聚合而不是分組
<graph string="Total idea score by Inventor">
<field name="inventor_id"/>
<field name="score" type="measure"/>
</graph>
警告
圖形視圖對數據庫值執行聚合,它們不與非存儲的計算字段一起使用
練習
圖形視圖
在Session對象中添加一個圖形視圖,它顯示每個course中在柱形圖表單下attendees的數量。
- 將attendees的數量作為存儲的計算字段添加
- 然后添加相關視圖
openacademy/models.py
openacademy/views/openacademy.xml
hours = fields.Float(string="Duration in hours",
compute='_get_hours', inverse='_set_hours')
attendees_count = fields.Integer(
string="Attendees count", compute='_get_attendees_count', store=True)
@api.depends('seats', 'attendee_ids')
def _taken_seats(self):
for r in self:
for r in self:
r.duration = r.hours / 24
@api.depends('attendee_ids')
def _get_attendees_count(self):
for r in self:
r.attendees_count = len(r.attendee_ids)
@api.constrains('instructor_id', 'attendee_ids')
def _check_instructor_not_in_attendees(self):
for r in self:
</field>
</record>
<record model="ir.ui.view" id="openacademy_session_graph_view">
<field name="name">openacademy.session.graph</field>
<field name="model">openacademy.session</field>
<field name="arch" type="xml">
<graph string="Participations by Courses">
<field name="course_id"/>
<field name="attendees_count" type="measure"/>
</graph>
</field>
</record>
<record model="ir.actions.act_window" id="session_list_action">
<field name="name">Sessions</field>
<field name="res_model">openacademy.session</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,gantt,graph</field>
</record>
<menuitem id="session_menu" name="Sessions"