Odoo Models là một phần quan trọng trong cấu trúc tổng thể của hệ thống Odoo. Trong bài viết này, chúng ta sẽ tìm hiểu cách phân biệt giữa các loại Model khác nhau trong Odoo.
Các loại model trong Odoo
Odoo sử dụng ba loại model chính:
- **Model**: Loại này dành cho các mô hình cơ sở dữ liệu thông thường. Dữ liệu trong model này được lưu trữ và duy trì trong cơ sở dữ liệu.
- **TransientModel**: Được sử dụng để lưu trữ dữ liệu tạm thời. Dữ liệu trong TransientModel cũng được lưu trữ trong cơ sở dữ liệu, nhưng hệ thống tự động loại bỏ nó thường xuyên, phù hợp khi bạn cần lưu trữ thông tin tạm thời mà không cần giữ lâu dài.
- **AbstractModel**: Loại này được sử dụng cho các lớp cha trừu tượng, có nghĩa là nó được chia sẻ bởi nhiều mô hình kế thừa trong Odoo. Điều này cho phép bạn chia sẻ các tính năng chung hoặc logic giữa nhiều mô hình khác nhau một cách hiệu quả.
Tạo model trong Odoo
Mỗi model trong Odoo nên đặt trong 1 file trong thư mục <my_addons>/models
Nó có nội dung như sau:
from odoo import fields, models, api class HmVpsPackage(models.Model): _name = 'hm.vps.package' _description = 'VPS Package' name = fields.Char('Package name')
Trong đó models.Model là loại model của Odoo. Tương ứng bạn có thể sử dụng 2 loại model là: models.TransientModel và models.AbstractModel
Với:
- _name và _description là api của model
- name = fields.Char(‘Package name’) là định nghĩa 1 field trong model.
Các API trong Odoo Models
Các API cơ bản thường sử dụng:
Tên API | Giá trị mặc định | Miêu tả |
_auto | True|False | Có tạo bảng CSDL không? True thì sẽ tạo bảng dưới CSDL Với AbstractModel thì mặc định _auto=False |
_name | None | Tên của model |
_table | None | Tên của bảng CSDL. Trường hợp mặc định nó sẽ lấy tên của model đặt tên cho tên bảng |
_sql_constraints | [] | Các rằng buộc SQL. Cú pháp: [(name, sql_def, message)] |
_inherit | () | Chỉ ra các model mà nó sẽ kế thừa |
_rec_name | None | Tên field hiển thị mặc định. Nếu là None thì nó sẽ hiển thị field “name“ |
_order | ‘id’ | Sắp sếp theo field nào. Mặc định là sắp xếp theo id |
Ngoài ra còn có các loại api khác các bạn vui lòng tham khảo tài liệu tại đây