ผลต่างระหว่างรุ่นของ "Tutorial Odoo 9.0 Part 7 : Computed fields and default values"
Sirawich (คุย | มีส่วนร่วม) (หน้าที่ถูกสร้างด้วย ' <h2>Computed fields and default values</h2> * <h3>Dependencies</h3> แก้ไขไฟล์ดังนี้ <br/><br/> openacade...') |
Sirawich (คุย | มีส่วนร่วม) |
||
แถว 23: | แถว 23: | ||
ส่วนนี้ จะเป็นการสร้าง method เพื่อคำนวนค่าของ taken seats | ส่วนนี้ จะเป็นการสร้าง method เพื่อคำนวนค่าของ taken seats | ||
<br/> | <br/> | ||
− | โดยจะคำนวนจาก จำนวน attendee (ผู้ที่ลงทะเบียน) ใน 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 เป็นวันปัจจุบัน ดังภาพ