Tutorial Odoo 9.0 Part 5 : Relations between models

จาก Morange Wiki

Relations between models

ความสัมพันธ์ของ Model กับ Model โดยใน Part นี้จะสอนวิธีการเขียนโปรแกรมให้ Model เชื่อมต่อกัน

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

openacademy/models.py

   <!-- เพิ่มไฟล์ต่อจาก Class ล่าสุด -->
class Session(models.Model):
    _name = 'openacademy.session'

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

openacademy/views/openacademy.xml

<!-- เพิ่มข้อความลงไป -->

        <!-- session form view -->
        <record model="ir.ui.view" id="session_form_view">
            <field name="name">session.form</field>
            <field name="model">openacademy.session</field>
            <field name="arch" type="xml">
                <form string="Session Form">
                    <sheet>
                        <group>
                            <field name="name"/>
                            <field name="start_date"/>
                            <field name="duration"/>
                            <field name="seats"/>
                        </group>
                    </sheet>
                </form>
            </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</field>
        </record>

        <menuitem id="session_menu" name="Sessions"
                  parent="openacademy_menu"
                  action="session_list_action"/>
    </data>
</openerp>
  • ทำการ Update เพื่อทำการแสดงผลลัพท์
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย


  • จะได้ผลที่เกิดตามภาพคือ จะมีแถบ Session ตรงข้างขวา

Many2one Relations

  • ขั้นตอนต่อจากนี้จะเป็นการ เขียน Model ให้มีความสัมพันธ์กันแบบ Many to one
    name = fields.Char(string="Title", required=True)
    description = fields.Text() 

<-- เพิ่มข้อความตรงนี้ -->
responsible_id = fields.Many2one('res.users',
        ondelete='set null', string="Responsible", index=True)
<-- จบ -->
class Session(models.Model):
    _name = 'openacademy.session'