Hai bài wizard vừa rồi, method cuối cùng luôn trả về {'type': 'ir.actions.act_window_close'} — làm xong thì đóng hộp thoại, và người dùng đứng lại ở màn hình cũ. Nhưng method của wizard là Python thường: nó trả được bất kỳ action nào. Tận dụng điều đó, ta biến bước cuối thành một cú "đưa người dùng đi tiếp" — chạy xong dẫn thẳng họ tới danh sách kết quả. Bài này đổi wizard cộng điểm để sau khi xác nhận, nó mở luôn danh sách các thẻ vừa cập nhật.
Trả action thay vì đóng
Thay đổi rất nhỏ: bước cuối, thay vì act_window_close, trả một act_window trỏ tới đúng các bản ghi vừa xử lý:

Hình 1: Trước — act_window_close chỉ đóng dialog. Sau — action_cong_diem cộng điểm rồi trả một act_window mở danh sách thẻ, domain=[('id','in', self.the_ids.ids)] để chỉ hiện đúng các thẻ vừa xử lý, target='current' (thay nội dung, không popup).
Vì method wizard là code Python bình thường, nó trả về được mọi loại action ta đã học: act_window (mở danh sách/form), act_url (mở link/PDF), report action, hay thậm chí một wizard bước sau.
Xác nhận rồi thấy kết quả ngay
Chạy wizard trên thẻ VIP-0004, bấm qua các bước và "Xác nhận cộng điểm". Ngay sau đó, Odoo không để lại form cũ mà mở thẳng danh sách:

Hình 2: Sau khi xác nhận, wizard đóng và mở đúng danh sách "Thẻ vừa cộng điểm" (thấy ở breadcrumb và tiêu đề) — chỉ chứa thẻ vừa xử lý (VIP-0004, giờ 10 điểm). Người dùng thấy ngay kết quả thao tác của mình, không phải tự đi tìm.
Nhìn action trả về — qua shell
Bản chất chỉ là dict action method trả về. Gọi trực tiếp để thấy rõ:

Hình 3: action_cong_diem() giờ trả về một dict act_window (domain lọc đúng id 48 — VIP-0004). Web client nhận dict này và điều hướng tới danh sách. Không có phép thuật client-side nào; tất cả nằm ở dict method trả về.
Vài mẫu "đi tiếp" hay dùng
- Mở danh sách kết quả:
act_windowvớidomainlọc đúng bản ghi vừa tạo/sửa — như ở đây. - Mở thẳng một bản ghi:
act_windowvớires_id+view_mode='form'— hợp khi wizard tạo một bản ghi và muốn đưa người dùng vào form của nó. - Tải file/báo cáo: trả
act_url(/report/pdf/...) hay report action — wizard nhập tham số xong, xuất luôn PDF. - Đi bước wizard sau: trả
act_windowmở một wizard khác (hoặc chính nó, như bài nhiều bước).
Vài lưu ý
target:currentđể thay màn hình chính (đi hẳn tới kết quả);newnếu muốn kết quả cũng ở dạng popup.- Đặt
namecho action để breadcrumb/tiêu đề rõ nghĩa ("Thẻ vừa cộng điểm"), thay vì tên mặc định của model. domainlọc đúng bản ghi vừa xử lý — dùngself.the_ids.ids(id các bản ghi wizard vừa đụng tới), đừng mở cả danh sách rồi để người dùng tự lọc.- Wizard vẫn đóng khi trả action khác
act_window_close; action mới thay thế nó.
Ba ý mang về
- Method wizard trả được bất kỳ action nào, không chỉ
act_window_close— tận dụng để "đưa người dùng đi tiếp" tới kết quả thay vì bỏ họ ở màn hình cũ. - Mẫu phổ biến: trả
act_windowvớidomainlọc đúng bản ghi vừa xử lý (danh sách kết quả), hoặcres_id(mở thẳng một form), hoặcact_url/report (tải file). - Chỉ là dict method trả về: đặt
namecho breadcrumb rõ nghĩa,target='current'để đi hẳn tới kết quả; web client lo phần điều hướng.
Chuỗi wizard khép lại ở đây. Quay về mảng report — bài trước ta gắn report action; bài sau đi sâu vào chính nội dung: Phần sau về viết template QWeb cho PDF — cú pháp t-foreach, t-if, t-field, bảng, tổng cộng, và cách bố cục một trang in cho đẹp.