Ô tìm kiếm và bộ lọc trên thanh trên cùng thì tiện, nhưng để lọc nhanh theo danh mục — kiểu "chỉ xem thẻ Vàng", "chỉ xem thẻ đã khoá" — thì Odoo có một thứ trực quan hơn nhiều: searchpanel, cái bảng lọc dọc nằm bên trái list và kanban. Bấm một mục là danh sách thu gọn ngay. Bài này gắn searchpanel vào view thẻ thành viên và mổ xẻ các tuỳ chọn của nó.
Một thẻ searchpanel, vài field
searchpanel đặt bên trong <search>. Mỗi <field> khai trong đó trở thành một mục lọc ở panel bên trái, gom các bản ghi theo giá trị field đó:

Hình 1: searchpanel với hai field. hang_the để mặc định (select="one") — chọn một mục. trang_thai đặt select="multi" — hiện ô tick, chọn nhiều. enable_counters hiện số bản ghi mỗi mục; icon gắn biểu tượng cho tiêu đề mục.
Panel lọc chạy thật
Mở danh sách thẻ, panel hiện bên trái:

Hình 2: Panel bên trái. HẠNG THẺ (icon sao) — chọn một: Tất cả / Bạc (3) / Vàng (1). TRẠNG THÁI (icon cờ) — ô tick chọn nhiều: Đang dùng (2) / Hết hạn (1) / Đã khoá (1). Bấm "Vàng" là list chỉ còn thẻ Vàng; tick "Hết hạn" + "Đã khoá" là gộp hai trạng thái. Con số bên phải mỗi mục là enable_counters đang đếm.
Cái hay so với bộ lọc thanh trên: searchpanel luôn hiện danh mục và số đếm, nên người dùng thấy ngay "có bao nhiêu ở mỗi loại" và bấm là lọc — không cần mở menu, gõ, hay nhớ tên filter.
select one hay multi?
Hai kiểu chọn cho hai nhu cầu khác nhau:
select="one"(mặc định) — như radio. Chọn một mục tại một thời điểm, có sẵn mục "Tất cả" để bỏ lọc. Hợp cho danh mục mà một bản ghi chỉ thuộc một giá trị và bạn muốn xem từng cái một (hạng thẻ, danh mục sản phẩm).select="multi"— ô tick. Chọn nhiều mục, kết quả là hợp của chúng. Hợp khi muốn "xem cả hết hạn lẫn khoá cùng lúc".
Chọn kiểu theo cách người dùng thật sự lọc: xem-từng-loại thì one, gộp-nhiều-loại thì multi.
Vài lưu ý
- searchpanel hiện trên list và kanban, không trên form. Nó là công cụ duyệt tập bản ghi, nên chỉ có nghĩa ở view nhiều bản ghi.
- Dùng được cả Many2one, không chỉ Selection — khi đó panel lọc theo bản ghi cha (ví dụ lọc theo danh mục là một model riêng). Thêm
domain=để giới hạn giá trị hiện trong panel. enable_counterscó chi phí — nó đếm bản ghi mỗi mục, trên bảng cực lớn có thể chậm; cân nhắc tắt nếu dữ liệu khổng lồ.groupbycho Many2one nhiều cấp: searchpanel còn xếp mục theo cây cha-con nếu field đích có quan hệ phân cấp.
Ba ý mang về
<searchpanel>(đặt trong<search>) tạo bảng lọc dọc bên trái cho list và kanban; mỗi<field>là một mục lọc nhanh theo danh mục.select="one"chọn một mục (radio, có "Tất cả");select="multi"tick chọn nhiều mục cộng dồn — chọn kiểu theo cách người dùng lọc;enable_countershiện số đếm,icongắn biểu tượng.- Panel dùng cả Selection lẫn Many2one (lọc theo bản ghi cha,
domaingiới hạn), chỉ hiện ở view nhiều bản ghi, không ở form;enable_counterscó chi phí trên dữ liệu lớn.
Xong công cụ lọc. Bài sau nhìn tổng thể một action gom nhiều kiểu view: Phần sau về view_mode — cách một action cho người dùng nhảy giữa list, kanban, form, pivot... và thứ tự khai quyết định view nào mở trước.