Một cái field trên form mà nhãn ghi "Partner" hay "Khách hàng" nhưng thực chất là "người sở hữu thẻ" thì người dùng phải đoán. Đoán sai thì nhập sai. Odoo có hai thứ nhỏ để dập tắt loại nhầm lẫn này: string đổi nhãn cho đúng nghĩa, và help thêm một tooltip giải thích khi rê chuột. Bài này gắn cả hai vào form thẻ thành viên và xem chúng hiện ra thật.
string đổi nhãn, help thêm tooltip
Mỗi field vốn đã có nhãn mặc định (lấy từ string trong định nghĩa field). Trong view, bạn đè nhãn đó bằng thuộc tính string, và gắn thêm chú thích bằng help:

Hình 1: (1) Trong view: string="Chủ thẻ" đổi nhãn của partner_id, help="..." thêm tooltip. (2) Trong định nghĩa field (Python): đặt string/help ngay tại field để áp cho mọi view. help ở view đè help ở định nghĩa field.
Thấy nó trên form thật
Sau khi nâng cấp module, mở form VIP-0001 và rê chuột vào nhãn "Chủ thẻ":

Hình 2: Nhãn đã là "Chủ thẻ" (không còn "Khách hàng") — đó là string. Cạnh nhãn có dấu ?; rê vào, tooltip đen hiện ra đúng nội dung help: "Người sở hữu thẻ. Chỉ chọn được cá nhân; bắt buộc khi thẻ từ 100 điểm trở lên." Các field "Điểm tích luỹ", "Hạng thẻ" cũng mang dấu ? vì cũng có help.
Tooltip này đắt giá ở chỗ: nó giải thích ngay tại chỗ, không bắt người dùng đi tìm tài liệu. Một câu help tốt còn nhắc cả quy tắc nghiệp vụ — như ở đây báo trước "bắt buộc khi từ 100 điểm", đúng với điều kiện required="diem >= 100" mà ta đặt.
Đặt ở view hay ở định nghĩa field?
Cùng một cặp string/help, đặt ở hai nơi cho hiệu lực khác nhau:
- Ở định nghĩa field (Python) — áp cho mọi view dùng field đó. Dùng khi nhãn/giải thích là bản chất của field, đúng ở khắp nơi. Ví dụ
so_duluôn nên có tooltip "số dư quy đổi". - Ở view — chỉ áp cho màn hình đó, và đè giá trị từ định nghĩa field. Dùng khi cùng field nhưng ngữ cảnh mỗi form một khác, hoặc muốn nói rõ hơn cho riêng màn hình này.
Quy tắc gọn: giải thích chung thì để ở field; giải thích theo ngữ cảnh thì để ở view.
Vài lưu ý nhỏ mà hiệu quả
stringchỉ đổi cái hiển thị, không đổi tên kỹ thuật. Field vẫn làpartner_idtrong code và dữ liệu; chỉ nhãn người dùng thấy đổi.helpnên ngắn và nói tại sao/quy tắc, không lặp lại tên field. "Chủ thẻ" mà help ghi "Đây là chủ thẻ" thì vô ích; ghi "chỉ chọn cá nhân, bắt buộc từ 100 điểm" mới đáng.- Nhãn cũng đặt được bằng thẻ
<label for="...">khi cần bố cục đặc biệt (ví dụ trongoe_title), nhưng cho trường hợp thường thìstringtrên<field>là đủ và gọn nhất. - Đây thuần tuý là trải nghiệm người dùng — không đụng dữ liệu, không cần migrate. Thêm một dòng
helplà một trong những cải thiện rẻ nhất mà giá trị nhất.
Ba ý mang về
stringđổi nhãn hiển thị của field (đè nhãn mặc định),helpthêm tooltip hiện khi rê vào dấu ? — hai cách nhỏ để field tự giải thích.- Đặt ở view (một màn hình, đè) hay ở định nghĩa field (mọi nơi) tuỳ lời giải thích đúng theo ngữ cảnh hay là bản chất của field.
- Viết
helpcho ra giá trị: nói quy tắc/lý do, ngắn gọn, đừng lặp tên field — đây là cải thiện UX không tốn dữ liệu, không cần migrate.
Nhãn và tooltip lo phần chữ quanh ô. Bài sau đi vào bên trong ô: Phần sau về placeholder và options của widget — gợi ý mờ trong ô trống và những tuỳ chọn tinh chỉnh cách một widget hoạt động.