Dalam pemrograman metode MVC ( Model, View , Controller) kita mengenal model sebagai tempat menempatkan proses bisnis dan juga tabel database. Begitu juga dalam pemrograman berbasis Odoo 17 kita akan membuat model sebagai tempat menyimpan definisi tabel.
Pembuatan model pada pemrograman dengan Odoo 17 adalah seperti pada langkah-langkah berikut ini
- Membuat file untuk model
Catatan gambar: folder asrama direname ke asramaku
Kita masuk ke PyCharm membuat file baru pada folder models.
Kita kemudian menamai file tersebut kemudianklik Python file
- Mengedit model
Kita melengkapi pembuatan program dengan source seperti gambar di atas atau seperti di bawah ini123456789from odoo import fields, models
class
Hostel(models.Model):
_name =
'asrama.hostel'
_description =
"Informasi tentang asrama-hostel"
name = fields.Char(string=
"Nama Hostel"
,required=True)
hostel_code = fields.Char(string=
"Kode"
,required=True)
street = fields.Char(
'Jalan'
)
street2 = fields.Char(
'Jalan2'
)
state_id = fields.Many2one(
'res.country.state'
,string=
"State"
)
- Model – init
1from . import hostel
- Modul init
123from . import models
from . import controllers
from . import wizards
- Perintah chmod
1
$
chmod
-R a+rx asramaku
- Restart Odoo
1
# docker restart odooku-web-1
- Activate developer mode
- Update app list
- Activate modul
- Melihat model yang terbentuk
Dari aplikasi Settings kita menuju menu Technical | Models seperti pada gambar di atas.
Kita kemudian membuat filter yang berkaitan dengan model yang baru saja kita buat.
Tampak field-field yang dibuat oleh model yang kita buat.
- Tampilan pgAdmin4 untuk tabel yang baru saja dibuat
Tabel dan kolom:
Melihat property dari state_id:
Relasi tabel:
Tabel res_country_state:
- Masuk ke container database
123456
# docker
exec
-it odooku-db-1 bash
root@f28c3368476e:/# psql -U odoo -d rnd.metiu.co.id
psql (15.6 (Debian 15.6-1.pgdg120+2))
Type
"help"
for
help.
rnd.metiu.co.id=#
- Melihat semua tabel
123456789101112131415161718192021222324252627282930313233343536373839404142434445
rnd.metiu.co.id=# \dt;
List of relations
Schema | Name | Type | Owner
--------+-----------------------------------------------------+-------+-------
public
| asrama_hostel | table | odoo
public
| auth_totp_device | table | odoo
public
| auth_totp_wizard | table | odoo
public
| base_document_layout | table | odoo
public
| base_enable_profiling_wizard | table | odoo
public
| base_import_import | table | odoo
public
| base_import_mapping | table | odoo
public
| base_import_module | table | odoo
public
| base_language_export | table | odoo
public
| base_language_import | table | odoo
public
| base_language_install | table | odoo
public
| base_module_uninstall | table | odoo
public
| base_module_update | table | odoo
public
| base_module_upgrade | table | odoo
public
| base_partner_merge_automatic_wizard | table | odoo
public
| base_partner_merge_automatic_wizard_res_partner_rel | table | odoo
public
| base_partner_merge_line | table | odoo
public
| bus_bus | table | odoo
public
| bus_presence | table | odoo
public
| change_password_own | table | odoo
public
| change_password_user | table | odoo
public
| change_password_wizard | table | odoo
public
| decimal_precision | table | odoo
public
| iap_account | table | odoo
public
| iap_account_info | table | odoo
public
| iap_account_res_company_rel | table | odoo
public
| ir_act_client | table | odoo
public
| ir_act_report_xml | table | odoo
public
| ir_act_server | table | odoo
public
| ir_act_server_group_rel | table | odoo
public
| ir_act_server_webhook_field_rel | table | odoo
public
| ir_act_url | table | odoo
public
| ir_act_window | table | odoo
public
| ir_act_window_group_rel | table | odoo
public
| ir_act_window_view | table | odoo
public
| ir_actions | table | odoo
public
| ir_actions_todo | table | odoo
public
| ir_asset | table | odoo
public
| ir_attachment | table | odoo
public
| ir_config_parameter | table | odoo
- Melihat tabel yang baru saja dibuat
1234567891011121314151617181920
rnd.metiu.co.id=# \d asrama_hostel;
Table
"public.asrama_hostel"
Column | Type | Collation | Nullable | Default
-------------+-----------------------------+-----------+----------+-------------------------------------------
id | integer | | not null | nextval(
'asrama_hostel_id_seq'
::regclass)
state_id | integer | | |
create_uid | integer | | |
write_uid | integer | | |
name | character varying | | not null |
hostel_code | character varying | | not null |
street | character varying | | |
street2 | character varying | | |
create_date | timestamp without time zone | | |
write_date | timestamp without time zone | | |
Indexes:
"asrama_hostel_pkey"
PRIMARY KEY, btree (id)
Foreign-key constraints:
"asrama_hostel_create_uid_fkey"
FOREIGN KEY (create_uid) REFERENCES res_users(id) ON
DELETE
SET NULL
"asrama_hostel_state_id_fkey"
FOREIGN KEY (state_id) REFERENCES res_country_state(id) ON
DELETE
SET NULL
"asrama_hostel_write_uid_fkey"
FOREIGN KEY (write_uid) REFERENCES res_users(id) ON
DELETE
SET NULL
- Catatan gambar: folder asrama direname ke asramaku
Informasi lebih lanjut silahkan mengunjungi
1. https://www.odoo.com/documentation/17.0/developer/tutorials/server_framework_101/01_architecture.html .
2. https://www.odoo.com/documentation/17.0/developer/reference/backend/orm.html .
3. https://www.postgresqltutorial.com/postgresql-administration/postgresql-show-tables/ .
4. https://www3.ntu.edu.sg/home/ehchua/programming/sql/PostgreSQL_GetStarted.html .
Kunjungi www.proweb.co.id/implementasi-odoo/ untuk menambah wawasan implementasi Odoo ERP.