<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ### 關系字段 關系領域的鏈接記錄,無論是同一模型(層次結構),或不同型號。 關系字段類型: [`Many2one(other_model, ondelete='set null')`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.Many2one "openerp.fields.Many2one") 一個簡單的鏈接到另一個對象: ~~~ print foo.other_id.name ~~~ 再者見 [外鍵](http://www.postgresql.org/docs/9.3/static/tutorial-fk.html) [`One2many(other_model, related_field)`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.One2many "openerp.fields.One2many") 一個虛擬的關系,相反的 [`Many2one`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.Many2one "openerp.fields.Many2one"). 一個 [`One2many`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.One2many "openerp.fields.One2many") 作為記錄的容器,訪問它的結果在一個(可能是空的)組的記錄: ~~~ python for other in foo.other_ids: print other.name ~~~ Danger 因為一個 [`One2many`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.One2many "openerp.fields.One2many") 是一個虛擬的關系, 那里 *必須* 是一個 [`Many2one`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.Many2one "openerp.fields.Many2one") 字段在 `*other_model*` 中, 還有它的名字 *必須* 是 `*related_field*` [`Many2many(other_model)`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.Many2many "openerp.fields.Many2many") 雙向多重關系,任何記錄在一方可以與任何數量的記錄在另一邊。作為一個容器的記錄,訪問它也導致在一個可能是空的記錄集: ~~~ python for other in foo.other_ids: print other.name ~~~ 練習 Many2one 關系 使用many2one,修改 *Course* 和 *Session* 模型,以反映其與其他模型的關系: * 有一個課程 *responsible* 用戶; 該字段的值是內置模型的記錄 `res.users`. * 一個會話有一個 *instructor*; 該字段的值是內置模型的記錄 `res.partner`. * 一個會話與一個 *course*; 該字段的值是該模型的記錄 `openacademy.course` 而且是必需的. * 改變視圖. 1. 添加相關 `Many2one` 字段的模型, 還有 2. 將它們添加到視圖中. *openacademy/models.py* ~~~ python 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' ~~~ ~~~ python start_date = fields.Date() duration = fields.Float(digits=(6, 2), help="Duration in days") seats = fields.Integer(string="Number of seats") instructor_id = fields.Many2one('res.partner', string="Instructor") course_id = fields.Many2one('openacademy.course', ondelete='cascade', string="Course", required=True) ~~~ *openacademy/views/openacademy.xml* ~~~ <sheet> <group> <field name="name"/> <field name="responsible_id"/> </group> <notebook> <page string="Description"> ~~~ ~~~ </field> </record> <!-- 重寫自動生成的列表視圖 --> <record model="ir.ui.view" id="course_tree_view"> <field name="name">course.tree</field> <field name="model">openacademy.course</field> <field name="arch" type="xml"> <tree string="Course Tree"> <field name="name"/> <field name="responsible_id"/> </tree> </field> </record> <!-- window action --> <!-- The following tag is an action definition for a "window action", ~~~ ~~~ <form string="Session Form"> <sheet> <group> <group string="General"> <field name="course_id"/> <field name="name"/> <field name="instructor_id"/> </group> <group string="Schedule"> <field name="start_date"/> <field name="duration"/> <field name="seats"/> </group> </group> </sheet> </form> </field> </record> <!-- session tree/list view --> <record model="ir.ui.view" id="session_tree_view"> <field name="name">session.tree</field> <field name="model">openacademy.session</field> <field name="arch" type="xml"> <tree string="Session Tree"> <field name="name"/> <field name="course_id"/> </tree> </field> </record> <record model="ir.actions.act_window" id="session_list_action"> <field name="name">Sessions</field> <field name="res_model">openacademy.session</field> ~~~ 練習 逆one2many關系 使用逆關系場one2many,修改模型以反映課程與課程之間的關系。 1. 修改 `Course` 類, 然后 2. 在課程表視圖中添加該字段。 *openacademy/models.py* ~~~ python responsible_id = fields.Many2one('res.users', ondelete='set null', string="Responsible", index=True) session_ids = fields.One2many( 'openacademy.session', 'course_id', string="Sessions") class Session(models.Model): ~~~ *openacademy/views/openacademy.xml* ~~~ xml <page string="Description"> <field name="description"/> </page> <page string="Sessions"> <field name="session_ids"> <tree string="Registered sessions"> <field name="name"/> <field name="instructor_id"/> </tree> </field> </page> </notebook> </sheet> ~~~ 練習 多many2many關系 利用相關領域many2many,修改 *Session* 相關模型的每個會話的一套 *attendees* 。與會者將通過合作伙伴的記錄為代表,所以我們將與內置的模型 `res.partner`。相應地調整意見。 1. 修改 `Session` 類, 然后 2. 在窗體視圖中添加該字段。 *openacademy/models.py* ~~~ python instructor_id = fields.Many2one('res.partner', string="Instructor") course_id = fields.Many2one('openacademy.course', ondelete='cascade', string="Course", required=True) attendee_ids = fields.Many2many('res.partner', string="Attendees") ~~~ *openacademy/views/openacademy.xml* ~~~ xml <field name="seats"/> </group> </group> <label for="attendee_ids"/> <field name="attendee_ids"/> </sheet> </form> </field> ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看