Bài trước ta chia cột bằng cách lồng group. Nhưng nhiều khi bạn chỉ muốn chia một danh sách field dài thành vài đoạn có tiêu đề — "phần nhận diện", "phần điểm số", "phần liên lạc" — mà không cần dựng hẳn group con mới. Cho việc đó, Odoo có một thẻ nhẹ hều: <separator>. Nó kẻ một vạch ngang, kèm tiêu đề nếu muốn, ngay giữa các field. Bài này dùng separator gom field trên form thẻ thành viên.

Mỗi separator là một tiêu đề đoạn

<separator string="..."> đặt xen giữa các field sẽ tạo một tiêu đề đoạn (chữ đậm) với gạch ngang bên dưới. Mọi field nằm sau nó, cho tới separator kế tiếp, thuộc về đoạn đó — tất cả vẫn trong cùng một group:

Ảnh chụp đoạn mã nền tối một group chứa ba separator có string: Thông tin nhận diện với field hang_the và uu_tien, Điểm và số dư với field diem và so_du, Tuỳ chọn liên lạc với field nhan_km, mỗi separator kèm colspan 2; phía dưới là ví dụ separator không có string chỉ là một vạch trơn; cuối ảnh ghi separator chia đoạn bên trong một group nhẹ hơn lồng group con, có string thành tiêu đề không thì chỉ là vạch, trong group nhiều cột nhớ colspan để vạch trải hết chiều ngang

Hình 1: Ba <separator string="..."> chia một group thành ba đoạn có nhãn. Không cần group con nào. colspan="2" để vạch trải hết chiều ngang của group (mặc định col=2). <separator/> trơn (không string) chỉ là một vạch ngăn, không chữ.

Ba đoạn trên form thật

Tôi thêm một tab demo với đúng cấu trúc trên. Kết quả:

Ảnh chụp giao diện Odoo thật tab Separator demo, một cột dọc chia ba đoạn bằng tiêu đề đậm và gạch ngang: đoạn Thông tin nhận diện gồm Hạng thẻ Bạc và Mức ưu tiên hai sao, đoạn Điểm và số dư gồm Điểm tích luỹ 150 phần trăm và Số dư 0, đoạn Tuỳ chọn liên lạc gồm Nhận tin khuyến mãi công tắc bật

Hình 2: Ba tiêu đề "THÔNG TIN NHẬN DIỆN", "ĐIỂM VÀ SỐ DƯ", "TUỲ CHỌN LIÊN LẠC" — mỗi cái là một <separator> — chia cột field thành ba cụm rõ ràng. Tất cả nằm trong một group; separator chỉ vẽ vạch phân đoạn, không tạo container mới.

Nhìn là hiểu ngay field nào thuộc nhóm nào, dù chúng cùng một cột. Đó là toàn bộ giá trị của separator: ngăn nắp thị giác với chi phí gần như bằng không.

separator hay group con?

Cả separator và <group string="..."> đều cho tiêu đề có gạch. Khi nào dùng cái nào?

  • <separator> khi bạn chỉ muốn chia đoạn trong cùng một cột/một group, không đổi bố cục cột. Nhẹ, phẳng, ít lồng.
  • <group string="..."> con khi bạn muốn đoạn đó có bố cục cột riêng (ví dụ nằm cạnh một group khác thành hai cột) — như bố cục hai cột ở bài trước.

Nói cách khác: separator để phân đoạn theo chiều dọc; group con để dựng cột. Lồng group khi cần cột; dùng separator khi chỉ cần vạch chia.

Lưu ý nhỏ

  • Nhớ colspan trong group nhiều cột. Group col=2 mà separator không colspan="2" thì vạch chỉ chiếm một ô, trông cụt. Cho vạch trải hết bằng colspan bằng đúng số cột.
  • Đừng lạm dụng. Một form với bảy separator thành ra rối hơn là gọn. Chỉ chia khi các cụm thật sự khác chủ đề.
  • separator trơn (<separator/>) hữu ích khi muốn khoảng nghỉ giữa hai cụm mà không cần đặt tên cho cụm.
  • Như mọi thứ bố cục: không đụng dữ liệu, đổi thoải mái.

Ba ý mang về

  1. <separator string="..."> chia một group thành các đoạn có tiêu đề — chữ đậm kèm gạch ngang — mà không cần lồng group con.
  2. Chọn separator hay group con theo mục đích: separator để phân đoạn dọc trong cùng cột; group con khi đoạn cần bố cục cột riêng.
  3. Trong group nhiều cột, đặt colspan cho separator trải hết chiều ngang; <separator/> trơn cho khoảng ngăn không tên. Tất cả thuần bố cục.

Xong phần thân form. Bài sau leo lên đỉnh form — nơi có nút hành động và tiêu đề nổi bật: Phần sau về header và oe_title — dải nút/trạng thái trên cùng và khối tiêu đề lớn của bản ghi.