Open Source On-demand (Odoo), yang merupakan aplikasi open source ERP besar. Tentunya memiliki pola kode, atau singkatan-singkatan yang mungkin tidak anda ketahui, atau bahkan anda malas mencari tahu, kenapa ada singkatan itu, dan kenapa ada pola itu.
Model Prefix
Disini, kita akan membahas beberapa prefix yang biasanya digunakan pada model-model pada odoo. Check it out.
Prefix ir
Dalam odoo, anda pasti sering melihat model dengan awalan nama ir, contohnya seperti `ir.attachment`, `ir.ui.view`, dan lain sebagainya. Tahukah anda jika ir itu merupakan kepanjangan dari Information Resource?
Dan secara umum, model dengan prefix ir adalah bagian dari framework odoo yang menangani banyak aspek teknis. Contohnya, ir.ui.view, model ini akan menangani tentang UI yang anda tampilkan, atau ir.attachment yang biasanya digunakan untuk menangani file.
Prefix res
Prefix res merupakan kependekan dari resource. Model yang biasanya menggunakan prefix ini merupakan data sumber sebuah bisnis. Bisa dibilang ini merupakan data penting bagi sebuah bisnis, dan biasanya sering digunakan di seluruh sistem module odoo. Contohnya seperti:
- res.users: yang merupakan data untuk otentikasi yang merupakan sumber data penting untuk sebuah bisnis
- res.company: yang merupakan data penting untuk pengelolaan perusahaan-perusahaan yang ada pada aplikasi.
Suffix Relational Field
Disini kita akan membahas tentang suffix relational field. Yang nantinya kebanyakan akan kita gunakan sebagai tanda bahwa field tersebut adalah field yang berhubungan dengan model lain.
Suffix untuk many2one
Pada odoo, biasanya suffix untuk fields many2one menggunakan _id. Kenapa harus ada _id? Sebab, odoo juga menyimpan field anda pada database dalam bentuk integer, yang jika nanti tidak ditandai dengan suffix _id, maka pembacaan kolom-kolom pada database akan terasa rancu. Contoh penggunaan fields:
from odoo import fields, models
class YourModel(models.Model):
_name="your_module.your_model"
user_id = fields.Many2one("res.users") #contoh many2one ✅
attachment_id = fields.Many2one("ir.attachment") #contoh many2one ✅
Suffix untuk one2many dan many2many
Pada odoo, biasanya suffix untuk field one2many dan many2many menggunakan _ids. Kenapa harus ada _ids? Sebab ini memberi simbol bahwa yang berelasi dengan field tersebut adalah majemuk atau bisa lebih dari satu data. Contoh penggunaan fields:
from odoo import api, fields, models
class DailyStandup(models.Model):
_name = "agile.daily_standup"
_description = "Daily Standup"
name = fields.Char(tracking=True)
user_ids = fields.One2many(
comodel_name="agile.daily_standup_user", inverse_name="daily_standup_id") #contoh One2many
user_leader_candidate_ids = fields.Many2many(
comodel_name="res.users",
string="Leader Candidate",
relation="daily_standup_user_leader_candidate") #contoh Many2many