ผลต่างระหว่างรุ่นของ "Openerp/module 2"
ไปยังการนำทาง
ไปยังการค้นหา
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
แถว 126: | แถว 126: | ||
== onchange == | == onchange == | ||
+ | |||
+ | ใน easynote_view.xml | ||
+ | |||
+ | <syntaxhighlight lang="xml"> | ||
+ | <record model="ir.ui.view" id="view_easynote_note_form"> | ||
+ | ... | ||
+ | <field name="arch" type="xml"> | ||
+ | <form string="Note" version="7.0"> | ||
+ | <field name="title" on_change="onchange_note_title(title)"/> | ||
+ | ... | ||
+ | </form> | ||
+ | </field> | ||
+ | </record> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | การระบุดังกล่าวจะทำให้เมื่อข้อมูลในฟอร์มในฟิลด์นั้นมีการเปลี่ยนแปลง จะมีการเรียกเมท็อด onchange_note_title ที่โมเดล | ||
+ | |||
+ | <syntaxhighlight lang="python"> | ||
+ | def onchange_note_title(self, cr, uid, ids, title): | ||
+ | pass | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | พารามิเตอร์ cr, uid, ids นั้นจะเป็นพารามิเตอร์ที่ส่งให้โดยอัตโนมัติ ส่วน title นั้น มาจากที่เราระบุใน attribute on_change ด้านบน | ||
+ | |||
+ | เมท็อดดังกล่าวสามารถประมวลผลแล้วส่งค่าคืนได้หลายแบบ [https://doc.openerp.com/trunk/server/03_module_dev_03/#on-change อ่านเพิ่มได้จากเอกสารส่วน onchange] | ||
== action / ORM methods == | == action / ORM methods == | ||
== states == | == states == |
รุ่นแก้ไขเมื่อ 06:14, 20 พฤศจิกายน 2556
Note & Category
ไฟล์จากครั้งก่อน
easynote.py
from osv import osv, fields
class Category(osv.Model):
_name = 'easynote.category'
_columns = {
'name': fields.char('Name', size=50, required=True),
'note_ids': fields.one2many('easynote.note', 'category_id', 'Notes')
}
class Note(osv.Model):
_name = 'easynote.note'
_rec_name = 'title'
_columns = {
'title': fields.char('Title', size=100, required=True),
'body': fields.text('Body', required=True),
'number': fields.integer('Number'),
'category_id': fields.many2one('easynote.category', 'Category'),
}
easynote_view.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="view_easynote_note_tree">
<field name="name">easynote.note.tree</field>
<field name="model">easynote.note</field>
<field name="arch" type="xml">
<tree string="Note">
<field name="title"/>
<field name="body"/>
<field name="number"/>
<field name="category_id"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_easynote_note_form">
<field name="name">easynote.note.form</field>
<field name="model">easynote.note</field>
<field name="arch" type="xml">
<form string="Note" version="7.0" class="oe_form_nomargin">
<field name="title" />
<field name="body" widget="html" class="oe_memo" editor_height="100px" />
<field name="number"/>
<field name="category_id"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_easynote_note">
<field name="name">EasyNotes</field>
<field name="res_model">easynote.note</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_open_true':True}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a note. blah blah
</p>
<p>
Use notes to organize personal tasks or notes.
</p>
</field>
</record>
<record model="ir.ui.view" id="view_easynote_category_tree">
<field name="name">easynote.category.tree</field>
<field name="model">easynote.category</field>
<field name="arch" type="xml">
<tree string="Categry">
<field name="name"/>
<field name="note_ids"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_easynote_category_form">
<field name="name">easynote.category.form</field>
<field name="model">easynote.category</field>
<field name="arch" type="xml">
<form string="Category">
<field name="name"/>
<field name="note_ids"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_easynote_category">
<field name="name">Category</field>
<field name="res_model">easynote.category</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_open_true':True}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a category.
</p>
</field>
</record>
<menuitem name="Notes" id="menu_easynote_top"
parent="" sequence="1"
action="easynote.action_easynote_note"/>
<menuitem name="Your Notes" id="menu_easynote_main"
parent="menu_easynote_top" sequence="1"/>
<menuitem name="Notes" id="menu_easynote_note"
parent="menu_easynote_main" sequence="1"
action="easynote.action_easynote_note"/>
<menuitem name="Categories" id="menu_easynote_category"
parent="menu_easynote_main" sequence="2"
action="easynote.action_easynote_category"/>
</data>
</openerp>
onchange
ใน easynote_view.xml
<record model="ir.ui.view" id="view_easynote_note_form">
...
<field name="arch" type="xml">
<form string="Note" version="7.0">
<field name="title" on_change="onchange_note_title(title)"/>
...
</form>
</field>
</record>
การระบุดังกล่าวจะทำให้เมื่อข้อมูลในฟอร์มในฟิลด์นั้นมีการเปลี่ยนแปลง จะมีการเรียกเมท็อด onchange_note_title ที่โมเดล
def onchange_note_title(self, cr, uid, ids, title):
pass
พารามิเตอร์ cr, uid, ids นั้นจะเป็นพารามิเตอร์ที่ส่งให้โดยอัตโนมัติ ส่วน title นั้น มาจากที่เราระบุใน attribute on_change ด้านบน
เมท็อดดังกล่าวสามารถประมวลผลแล้วส่งค่าคืนได้หลายแบบ อ่านเพิ่มได้จากเอกสารส่วน onchange