Tài liệu ràng buộc Python
Giới thiệu khả năng thêm một số logic nghiệp vụ vào mô hình của chúng tôi. Bây giờ chúng tôi có thể liên kết các nút với mã doanh nghiệp, nhưng làm cách nào để ngăn người dùng nhập dữ liệu không chính xác? Show Odoo cung cấp hai cách để thiết lập các bất biến được xác minh tự động. và SQLThẩm quyền giải quyết. tài liệu liên quan đến chủ đề này có thể được tìm thấy trong và trong tài liệu của PostgreSQL Ghi chú Mục tiêu. ở cuối phần này
Các ràng buộc SQL được xác định thông qua thuộc tính mô hình Bạn có thể tìm thấy một ví dụ đơn giản Bài tập Thêm các ràng buộc SQL Thêm các ràng buộc sau vào các mô hình tương ứng của chúng
Mẹo. tìm kiếm từ khóa Khởi động lại máy chủ với tùy chọn from odoo.exceptions import ValidationError ... @api.constrains('date_end') def _check_date_end(self): for record in self: if record.date_end < fields.Date.today(): raise ValidationError("The end date cannot be set in the past") # all records passed the test, don't return anything0 để xem kết quả. Lưu ý rằng bạn có thể có dữ liệu ngăn không cho đặt ràng buộc SQL. Một thông báo lỗi tương tự như sau có thể bật lên ERROR rd-demo odoo.schema: Table 'estate_property_offer': unable to add constraint 'estate_property_offer_check_price' as CHECK(price > 0) Ví dụ: nếu một số ưu đãi có giá bằng 0 thì không thể áp dụng ràng buộc. Bạn có thể xóa dữ liệu có vấn đề để áp dụng các ràng buộc mới con trănThẩm quyền giải quyết. các tài liệu liên quan đến chủ đề này có thể được tìm thấy trong Ghi chú Mục tiêu. ở cuối phần này, sẽ không thể chấp nhận một đề nghị thấp hơn 90% giá dự kiến Các ràng buộc SQL là một cách hiệu quả để đảm bảo tính nhất quán của dữ liệu. Tuy nhiên, có thể cần thực hiện các kiểm tra phức tạp hơn yêu cầu mã Python. Trong trường hợp này, chúng ta cần một ràng buộc Python Một ràng buộc Python được định nghĩa là một phương thức được trang trí bằng và được gọi trên một tập bản ghi. Trình trang trí chỉ định trường nào có liên quan đến ràng buộc. Ràng buộc được đánh giá tự động khi bất kỳ trường nào trong số này được sửa đổi. Phương pháp 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 from odoo.exceptions import ValidationError ... @api.constrains('date_end') def _check_date_end(self): for record in self: if record.date_end < fields.Date.today(): raise ValidationError("The end date cannot be set in the past") # all records passed the test, don't return anything Một ví dụ đơn giản có thể được tìm thấy Bài tập Thêm các ràng buộc Python Thêm ràng buộc để giá bán không được thấp hơn 90% giá dự kiến Mẹo. giá bán bằng 0 cho đến khi một ưu đãi được xác thực. Bạn sẽ cần tinh chỉnh séc của mình để tính đến điều này Cảnh báo Luôn sử dụng các phương thức from odoo.exceptions import ValidationError ... @api.constrains('date_end') def _check_date_end(self): for record in self: if record.date_end < fields.Date.today(): raise ValidationError("The end date cannot be set in the past") # all records passed the test, don't return anything3 và from odoo.exceptions import ValidationError ... @api.constrains('date_end') def _check_date_end(self): for record in self: if record.date_end < fields.Date.today(): raise ValidationError("The end date cannot be set in the past") # all records passed the test, don't return anything4 từ from odoo.exceptions import ValidationError ... @api.constrains('date_end') def _check_date_end(self): for record in self: if record.date_end < fields.Date.today(): raise ValidationError("The end date cannot be set in the past") # all records passed the test, don't return anything5 khi làm việc với số float Đảm bảo ràng buộc được kích hoạt mỗi khi giá bán hoặc giá dự kiến thay đổi Các ràng buộc SQL thường hiệu quả hơn các ràng buộc Python. Khi hiệu suất quan trọng, hãy luôn ưu tiên SQL hơn các ràng buộc của Python Mô-đun bất động sản của chúng tôi đang bắt đầu hoạt động tốt. Chúng tôi đã thêm một số logic kinh doanh và bây giờ chúng tôi đảm bảo dữ liệu nhất quán. Tuy nhiên, giao diện người dùng vẫn còn hơi thô. Hãy xem làm thế nào chúng ta có thể cải thiện nó trong Các ràng buộc trong Python là gì?Ràng buộc python là gì? . a module implementing support for handling CSPs (Constraint Solving Problems) over finite domain.
Trình giải quyết ràng buộc cho Python là gì?Mô-đun ràng buộc Python cung cấp bộ giải cho các Bài toán thỏa mãn ràng buộc (CSP) trên các miền hữu hạn bằng Python đơn giản và thuần túy . CSP là lớp các bài toán có thể được biểu diễn dưới dạng các biến (a, b,…), miền (a trong [1, 2, 3],…) và các ràng buộc (a < b,…).
Trình giải quyết ràng buộc là gì?Các hạn chế được xây dựng dưới dạng các ràng buộc giúp gán giá trị cho một biến tùy ý. Bộ giải ràng buộc có thể truyền các hệ quả của việc gán cho các biến khác và thứ tự của các phép gán biến không ảnh hưởng đến các ràng buộc . |