ผลต่างระหว่างรุ่นของ "Tutorial Odoo 9.0 Part 7 : Computed fields and default values"

จาก Morange Wiki
(หน้าที่ถูกสร้างด้วย ' <h2>Computed fields and default values</h2> * <h3>Dependencies</h3> แก้ไขไฟล์ดังนี้ <br/><br/> openacade...')
 
แถว 23: แถว 23:
 
ส่วนนี้ จะเป็นการสร้าง method เพื่อคำนวนค่าของ taken seats
 
ส่วนนี้ จะเป็นการสร้าง method เพื่อคำนวนค่าของ taken seats
 
<br/>
 
<br/>
โดยจะคำนวนจาก จำนวน attendee (ผู้ที่ลงทะเบียน) ใน session นั้นๆ และ seats (จำนวนที่นั่งสูงสุด) ที่รองรับ ของ session นั้นๆ
+
โดยจะคำนวนจาก จำนวน <b style="color:#0F0;">attendee</b> (ผู้ที่ลงทะเบียน) ใน session นั้นๆ และ <b style="color:#F00;">seats</b> (จำนวนที่นั่งสูงสุด) ที่รองรับ ของ session นั้นๆ
 
<br/>
 
<br/>
 
จากนั้นทำการคิดเป็นเปอร์เซ็นต์
 
จากนั้นทำการคิดเป็นเปอร์เซ็นต์
แถว 56: แถว 56:
 
และส่วนนี้เป็นการเพิ่ม taken seats ใน tree view ของ session ดังภาพ
 
และส่วนนี้เป็นการเพิ่ม taken seats ใน tree view ของ session ดังภาพ
 
[[ไฟล์:Odoo7-2.png|800px]]
 
[[ไฟล์:Odoo7-2.png|800px]]
 +
<br/><br/>
 +
* <h3>Default values</h3>
 +
แก้ไขไฟล์ดังนี้
 +
<br/><br/>
 +
openacademy/models.py
 +
<pre>
 +
    _name = 'openacademy.session'
 +
 +
    name = fields.Char(required=True)
 +
    start_date = fields.Date(default=fields.Date.today)
 +
    duration = fields.Float(digits=(6, 2), help="Duration in days")
 +
    seats = fields.Integer(string="Number of seats")
 +
    active = fields.Boolean(default=True)
 +
 +
    instructor_id = fields.Many2one('res.partner', string="Instructor",
 +
        domain=['|', ('instructor', '=', True),
 +
</pre>
 +
ในส่วนนี้จะเป็นการเพิ่ม field active พร้อมกับให้ค่า default เป็น true
 +
<br/>
 +
และปรับ start_date โดยเพิ่มค่า default เป็นวันปัจจุบัน
 +
openacademy/views/openacademy.xml
 +
<pre>
 +
                                <field name="course_id"/>
 +
                                <field name="name"/>
 +
                                <field name="instructor_id"/>
 +
                                <field name="active"/>
 +
                            </group>
 +
                            <group string="Schedule">
 +
                                <field name="start_date"/>
 +
</pre>
 +
เมื่อสร้าง session ใหม่  จะปรากฏ active ที่มีค่าเริ่มต้นเป็น true และ ค่าเริ่มต้นของ start_date เป็นวันปัจจุบัน ดังภาพ
 +
[[ไฟล์:Odoo7-4.png]]

รุ่นแก้ไขเมื่อ 05:29, 15 กรกฎาคม 2559

Computed fields and default values

  • Dependencies

แก้ไขไฟล์ดังนี้

openacademy/models.py

    course_id = fields.Many2one('openacademy.course',
        ondelete='cascade', string="Course", required=True)
    attendee_ids = fields.Many2many('res.partner', string="Attendees")

    taken_seats = fields.Float(string="Taken seats", compute='_taken_seats')

    @api.depends('seats', 'attendee_ids')
    def _taken_seats(self):
        for r in self:
            if not r.seats:
                r.taken_seats = 0.0
            else:
                r.taken_seats = 100.0 * len(r.attendee_ids) / r.seats

ส่วนนี้ จะเป็นการสร้าง method เพื่อคำนวนค่าของ taken seats
โดยจะคำนวนจาก จำนวน attendee (ผู้ที่ลงทะเบียน) ใน session นั้นๆ และ seats (จำนวนที่นั่งสูงสุด) ที่รองรับ ของ session นั้นๆ
จากนั้นทำการคิดเป็นเปอร์เซ็นต์

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย



openacademy/views/openacademy.xml

                                <field name="start_date"/>
                                <field name="duration"/>
                                <field name="seats"/>
                                <field name="taken_seats" widget="progressbar"/>
                            </group>
                        </group>
                        <label for="attendee_ids"/>

ส่วนนี้เป็นการเพิ่ม taken seats ใน form ของ session ดังภาพ

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย



openacademy/views/openacademy.xml

                <tree string="Session Tree">
                    <field name="name"/>
                    <field name="course_id"/>
                    <field name="taken_seats" widget="progressbar"/>
                </tree>
            </field>
        </record>

และส่วนนี้เป็นการเพิ่ม taken seats ใน tree view ของ session ดังภาพ

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย



  • Default values

แก้ไขไฟล์ดังนี้

openacademy/models.py

    _name = 'openacademy.session'

    name = fields.Char(required=True)
    start_date = fields.Date(default=fields.Date.today)
    duration = fields.Float(digits=(6, 2), help="Duration in days")
    seats = fields.Integer(string="Number of seats")
    active = fields.Boolean(default=True)

    instructor_id = fields.Many2one('res.partner', string="Instructor",
        domain=['|', ('instructor', '=', True),

ในส่วนนี้จะเป็นการเพิ่ม field active พร้อมกับให้ค่า default เป็น true
และปรับ start_date โดยเพิ่มค่า default เป็นวันปัจจุบัน openacademy/views/openacademy.xml

                                <field name="course_id"/>
                                <field name="name"/>
                                <field name="instructor_id"/>
                                <field name="active"/>
                            </group>
                            <group string="Schedule">
                                <field name="start_date"/>

เมื่อสร้าง session ใหม่ จะปรากฏ active ที่มีค่าเริ่มต้นเป็น true และ ค่าเริ่มต้นของ start_date เป็นวันปัจจุบัน ดังภาพ Odoo7-4.png