III. Xây dựng mô-đun – Building modules
8. Ràng buộc mô hình
Odoo cung cấp hai cách để thiết lập bất biến được xác minh tự động:
Python constraints và SQL constraints.
Một ràng buộc Python được định nghĩa là một phương pháp được trang trí với constrains()và được gọi trên một tập bản ghi. Bộ trang trí chỉ định trường nào có liên quan đến ràng buộc, để ràng buộc được tự động đánh giá khi một trong số chúng được sửa đổi. Phương pháp này dự kiến sẽ đưa ra một ngoại lệ nếu bất biến của nó không được thỏa mãn:
fromodoo.exceptionsimport ValidationError @api.constrains('age')
def_check_something(self): for record in self:
if record.age > 20:
raise ValidationError("Your record is too old: %s" % record.age) # all records passed the test, don't return anything
Bài tập
Thêm ràng buộc Python
Thêm một ràng buộc kiểm tra xem người hướng dẫn không có mặt trong những người tham dự phiên riêng của mình.
Ràng buộc SQL được xác định thông qua thuộc tính mô _sql_constraints. Sau này được gán cho một danh sách ba chuỗi (tên, sql_definition, thông báo), trong đó tên là tên ràng buộc SQL hợp lệ, sql_definition là một biểu thức table_constraint và thông báo là thông báo lỗi.
Bài tập
Thêm ràng buộc SQL
Với sự trợ giúp của PostgreSQL’s documentation ,thêm các ràng buộc sau:
1. KIỂM TRA xem mô tả khóa học và tiêu đề khóa học có khác nhau không
2. Làm cho tên khóa học trở nên ĐỘC ĐÁO
Bài tập
Bài tập 6 - Thêm tùy chọn trùng lặp
Vì chúng tôi đã thêm một ràng buộc cho sự độc đáo của tên khóa học, nên không thể sử
dụng chức năng "trùng lặp" nữa (Form ‣ Duplicate).
Triển khai lại phương pháp "sao chép" của riêng bạn cho phép sao chép đối tượng Khóa học, thay đổi tên gốc thành "Bản sao của [tên gốc]".