Ở bài 183 ta biết Studio kéo-thả rất tiện, nhưng là bản trả phí. Vậy trên bản Community miễn phí, muốn thêm một ô riêng — ví dụ "Ghi chú giao hàng" cho từng sản phẩm — thì làm sao? Được, chỉ là thủ công hơn một chút qua Chế độ nhà phát triển (đã bật ở bài 9).
Cần hai bước: (1) tạo trường để Odoo có chỗ lưu dữ liệu, (2) đưa trường lên form để người dùng nhìn thấy và nhập. Bài này làm thật cả hai — thêm ô "Ghi chú giao hàng" vào sản phẩm cà phê.
Bài này ở mức trung cấp: đụng tới màn hình kỹ thuật. Làm trên tài khoản test trước, và chỉ sửa khi hiểu mình đang làm gì — sai một chút có thể làm form không mở được (mình cũng đã vấp lúc thử).
Bước 1: Tạo trường mới
Bật Chế độ nhà phát triển, vào Cài đặt → Kỹ thuật → Trường (Fields), bấm Mới. Khai vài ô rồi lưu:

Hình 1: Định nghĩa trường mới. Nhãn trường là tên người dùng thấy ("Ghi chú giao hàng"). Tên Trường là tên kỹ thuật, bắt buộc bắt đầu bằng x_ (ở đây x_ghi_chu_giao_hang) — quy ước của Odoo cho trường do người dùng thêm. Mô hình là bảng gắn trường vào ("Sản phẩm"). Loại Trường char nghĩa là một dòng chữ. Dưới cùng, ô Loại ghi "Trường Tùy chỉnh" — xác nhận đây là trường bạn tự thêm, không phải của Odoo.
Vài lựa chọn Loại Trường hay dùng:
- char: một dòng chữ ngắn (tên, ghi chú ngắn).
- text: đoạn văn dài nhiều dòng.
- integer / float: số nguyên / số thập phân.
- boolean: ô tick có/không.
- date / datetime: ngày / ngày giờ.
- many2one: liên kết tới một bản ghi bảng khác (ví dụ chọn một đối tác).
Lưu xong là dữ liệu đã có chỗ để lưu. Nhưng khoan mừng — trường vừa tạo chưa hiện trên form, vì ta chưa đưa nó lên giao diện.
Bước 2: Đưa trường lên form
Đây là điểm khác Studio: Studio kéo-thả trực tiếp, còn Community phải sửa giao diện (view) — bảo Odoo "đặt ô này vào chỗ này trên form". Làm qua Cài đặt → Kỹ thuật → Giao diện người dùng → Xem (Views): tạo một "view kế thừa" nói thêm trường x_ghi_chu_giao_hang vào form sản phẩm, dưới dạng một tab mới tên Giao hàng.
Sau khi lưu, mở đúng sản phẩm ra, ô mới đã nằm đó:

Hình 2: Form sản phẩm "Cà phê rang xay Arabica 1kg" giờ có thêm tab "Giao hàng" (cạnh Thông tin chung, Bán hàng, Tồn kho...). Bên trong là ô "Ghi chú giao hàng" ta vừa thêm, đã nhập nội dung thật: "Đóng thùng carton, tránh ẩm, giao trong 24h sau rang". Từ giờ mỗi sản phẩm lưu được ghi chú giao hàng riêng.
Xong! Một ô hoàn toàn mới, do bạn định nghĩa, hoạt động y như mọi ô có sẵn của Odoo — lưu được, tìm được, đưa vào báo cáo được.
Vì sao phải hai bước tách rời?
Người mới hay thắc mắc: sao không gộp làm một? Vì Odoo tách bạch dữ liệu và giao diện:
- Trường (bước 1) là chỗ chứa dữ liệu trong cơ sở dữ liệu — vô hình.
- View (bước 2) là cách bày dữ liệu cho người xem — một trường có thể xuất hiện ở nhiều form, hoặc không hiện chỗ nào.
Studio giấu sự tách bạch này sau thao tác kéo-thả (làm cả hai một lúc). Community bắt bạn làm rõ ràng từng bước — khó hơn, nhưng hiểu bản chất hơn.
Mấy điều cần cẩn thận
- Tên trường phải bắt đầu bằng
x_— bỏ quy ước này Odoo sẽ báo lỗi. - Sửa view có thể làm hỏng form nếu đặt sai chỗ — form không mở được (hiện "Đã xảy ra lỗi"). Vì thế thử trên bản test, và nhớ view vừa tạo để tắt/sửa khi cần.
- Đừng xóa trường bừa sau khi đã nhập dữ liệu — xóa trường là mất luôn dữ liệu trong đó.
- Với nhu cầu phức tạp (trường tính toán, liên kết nhiều bảng), cân nhắc nhờ người rành kỹ thuật hoặc nâng cấp lên Studio.
Nhớ ba ý
- Community thêm trường tùy biến qua hai bước: (1) tạo trường (Kỹ thuật → Trường, tên bắt đầu
x_, chọn loại), (2) đưa trường lên form (sửa view kế thừa). - Odoo tách dữ liệu (trường) khỏi giao diện (view) — Studio gộp hai việc bằng kéo-thả, Community làm rõ từng bước.
- Sửa view cẩn thận, làm trên bản test — đặt sai chỗ có thể khiến form không mở; đừng xóa trường đã có dữ liệu.
Thêm được trường rồi, bước tự nhiên tiếp theo là sắp xếp lại cả form cho hợp mắt. Phần sau đi sâu tùy biến giao diện (view) bằng Chế độ nhà phát triển — ẩn ô, đổi thứ tự, gom nhóm.