Ở bài 184 ta đã thêm ô "Ghi chú giao hàng" vào sản phẩm bằng cách sửa view (giao diện). Nhưng sửa view làm được nhiều hơn thế: đổi nhãn một ô, đổi tên tab, thêm dòng gợi ý, ẩn ô không dùng, sắp xếp lại thứ tự... Tất cả đều qua cùng một cơ chế — view kế thừa.
Bài này đào sâu việc tùy biến giao diện trên bản Community, ngay trên ô ta vừa tạo.
Vẫn ở mức trung cấp, làm trên tài khoản test. Và nhớ điều quan trọng (mình vấp nhiều lần): sửa view xong phải khởi động lại Odoo thì thay đổi mới hiện — vì máy chủ nhớ tạm (cache) cấu trúc giao diện.
View kế thừa là gì?
Odoo không cho bạn sửa thẳng giao diện gốc của nó (sửa là mất khi cập nhật). Thay vào đó, bạn tạo một view kế thừa — một "lớp phủ" nói: "giữ nguyên form gốc, chỉ thêm/sửa mấy chỗ này". Mở Cài đặt → Kỹ thuật → Giao diện người dùng → Xem, lọc theo tên, sẽ thấy lớp phủ ta đang dùng:

Hình 1: Danh sách Lượt xem (Views). Dòng product.template.form.x_ghi_chu là view kế thừa của ta: Dạng Biểu mẫu (Form), Mô hình product.template (Sản phẩm), và cột Chế độ xem Kế thừa ghi product.template.product.form — tức nó "phủ lên" form sản phẩm gốc đó. Một model có thể có hàng chục view kế thừa xếp chồng nhau, mỗi cái thêm một chút.
Mở view này ra, bên trong là mấy dòng XML mô tả thêm gì, sửa gì. Đây là nơi ta viết các tùy biến.
Vài tùy biến hay dùng
Trên chính ô "Ghi chú giao hàng" ở bài trước, ta thêm ba tùy biến cùng lúc, và kết quả:

Hình 2: Cùng ô đó sau khi tùy biến view. Tên tab đổi từ "Giao hàng" thành "Thông tin giao hàng". Nhãn ô đổi từ "Ghi chú giao hàng" thành "Hướng dẫn đóng gói & giao". Cạnh nhãn có dấu ? (tooltip trợ giúp) — rê chuột vào sẽ hiện lời giải thích. Nội dung dữ liệu vẫn nguyên.
Ba thứ vừa làm, và cách nghĩ về chúng:
- Đổi nhãn (
string): đổi chữ hiển thị của một ô mà không đổi dữ liệu bên dưới. Hữu ích khi nhãn mặc định khó hiểu với nhân viên. - Đổi tên tab / nhóm: đặt lại tiêu đề trang, nhóm cho hợp ngữ cảnh công ty bạn.
- Thêm gợi ý (
placeholder) và tooltip (help): hướng dẫn ngay tại chỗ nhập — người mới đỡ phải hỏi.
Ngoài ra còn vài tùy biến rất hay gặp (cùng cơ chế):
- Ẩn một ô (
invisible): giấu trường không dùng cho gọn form — dữ liệu vẫn còn, chỉ không hiện. - Đặt bắt buộc (
required): ép phải nhập ô đó mới lưu được. - Chỉ đọc (
readonly): cho xem nhưng không cho sửa. - Đổi thứ tự: đưa ô quan trọng lên trên.
Cách làm, gọn lại
Quy trình mỗi lần tùy biến giao diện:
- Bật Chế độ nhà phát triển.
- Mở form cần sửa, dùng nút Debug → "Chỉnh sửa view: Form" để xem cấu trúc, hoặc vào Kỹ thuật → Xem.
- Tạo/sửa một view kế thừa: chỉ tới ô cần đổi và ghi thuộc tính mới (nhãn, ẩn, bắt buộc...).
- Lưu, rồi khởi động lại Odoo (hoặc tải lại trang sau khi máy chủ làm mới cache) để thấy kết quả.
Cẩn thận — mấy chỗ dễ vấp
- Bắt buộc khởi động lại/làm mới sau khi sửa view. Máy chủ nhớ tạm cấu trúc giao diện; không làm mới thì bạn sửa mà màn hình không đổi, tưởng hỏng. (Đây là lỗi mình gặp nhiều nhất khi thử.)
- Chỉ tới đúng ô. Nếu "địa chỉ" ô sai (ô đó không có trên form), Odoo bỏ qua tùy biến của bạn trong im lặng — không báo lỗi, chỉ là chẳng thấy gì đổi.
- Đặt sai chỗ có thể làm form không mở ("Đã xảy ra lỗi"). Luôn thử trên bản test và nhớ view vừa tạo để tắt đi khi cần.
- Đừng ẩn ô đang bắt buộc nhập — người dùng sẽ không lưu được mà không hiểu vì sao.
Khi nào nên dùng, khi nào nên nhờ người khác?
- Tự làm được: đổi nhãn, đổi tên tab, thêm gợi ý, ẩn ô, đặt bắt buộc — những thứ "trang trí" và tổ chức lại.
- Nên nhờ người rành: logic phức tạp (ô này hiện khi ô kia có giá trị), trường tính toán, hoặc khi cần chuẩn để dễ nâng cấp về sau.
Với đa số nhu cầu nhỏ của một quán, mấy tùy biến ở bài này là quá đủ — và hoàn toàn miễn phí trên Community.
Nhớ ba ý
- View kế thừa là "lớp phủ" lên giao diện gốc: đổi nhãn, đổi tên tab, thêm gợi ý/tooltip, ẩn ô, bắt buộc, chỉ đọc, đổi thứ tự — mà không phá bản gốc.
- Quy trình: bật Developer mode → mở view/Debug → sửa view kế thừa → khởi động lại/làm mới để thấy kết quả.
- Chỉ sai địa chỉ → bị bỏ qua im lặng; đặt sai chỗ → hỏng form. Thử trên bản test, nhớ view để tắt khi cần.
Tùy biến giao diện xong, bước cao hơn là tùy biến hành vi — "khi bấm nút này thì Odoo tự làm gì đó". Phần sau giới thiệu Server Actions cơ bản — dạy Odoo tự động một việc mà không cần lập trình sâu.