2017-02-21 32 views
0

我想在odoo 10中創建一個條形圖(圖形視圖),它可以顯示每門課程中學習的學生人數。有了這個python數據庫,我該如何實現它?在互聯網上沒有關於這種類型的視圖的示例代碼。在odoo 10.0中創建圖表

class Student(models.Model): 
    _name = "studentmanagement.student" 

    id= fields.Char(required=True, index=True) 
    full_name= fields.Char(required=True, index=True) 
    gender = fields.Char() 
    birthday = fields.Char(required=True) 
    address = fields.Char(required=True) 
    course_inscription = fields.Many2many('studentmanagement.course',string = 'inscription') 
    _sql_constraints = [('id_unique', 'UNIQUE(id)', 'Two students can not have the same ID!')] 


class course(models.Model): 
    _name = "studentmanagement.course" 

    code = fields.Char(required=True, index=True) 
    course_name = fields.Char(required=True, index=True) 
    credits = fields.Integer(required=True) 
    nstudent= fields.Integer(compute='_compute_percentage_students_course', store=True) 
    _sql_constraints = [('code_unique', 'UNIQUE(code)', 'Two courses can not have the same ID!')] 

    @api.depends('percentage','course_inscription') 
    def _compute_percentage_students_course(self): 
     for record in self: 
      record.nstudent = len(record.course_inscription) 

非常感謝您的幫助!

回答

1

這是一個圖表視圖:

<graph string="Sales Orders"> 
        <field name="partner_id"/> 
        <field name="amount_total" type="measure"/> 
</graph> 

即圖表視圖有兩個字段。根據圖表的類型,它們將被相應地渲染。

你必須創建一個字段,將將保持計算的百分比,如:

percentage = fields.Float(compute='_compute_percentage_students_course' store=True)

在這一_compute_percentage_students_course你將計算和設定的計算是percentage字段的值(檢查計算關於如何正確地創建一個計算字段)

同時,檢查圖是如何創建的,它告訴你的圖形視圖的documentation官方documentation場部分,該類型的圖表,你可以有等ŧ他下面應該爲你工作:

<graph string="Sales Orders"> 
         <field name="full_name"/> 
         <field name="percentage" type="measure"/> 
    </graph> 
+0

高清_compute_percentage_students_course(個體經營): 的R自: nostudent = LEN(r.course_inscription) r.percentage = nostudent/100它不工作,在其他視圖當然形式,它的所有百分比都是0! –

+0

我不知道爲什麼該代碼不起作用! –

+1

如果存儲計算字段,則圖表視圖將起作用。因此,請確保您在計算字段的定義中放置了「store = True」。 –