Xem kiến trúc

Kiến trúc chung

Kiến trúc của một khung nhìn được xác định bởi dữ liệu XML được diễn giải bằng khung JavaScript.

Đối với hầu hết các chế độ xem, có một tệp *.rng xác định các thuộc tính và kiến trúc có thể có. Một số chế độ xem không được quản lý bởi tệp như vậy vì chúng chấp nhận nội dung HTML hoặc vì lý do hiệu suất.

Ghi chú

Bối cảnh hiện tại và quyền truy cập của người dùng có thể ảnh hưởng đến khả năng xem.

Xem thêm

Xem bản ghi

Biểu thức Python

Khi đánh giá các thuộc tính nút, ví dụ: công cụ sửa đổi readonly, có thể cung cấp biểu thức Python sẽ được thực thi trong môi trường có quyền truy cập vào các biến sau:

  • Tên của tất cả các trường có trong chế độ xem hiện tại, chứa giá trị của bản ghi hiện tại, ngoại trừ column_invisible trong list view; các trường quan hệ được đưa ra dưới dạng danh sách ID;

  • ID của bản ghi hiện tại;

  • parent: bản ghi đề cập đến vùng chứa; chỉ bên trong các chế độ xem phụ của các trường quan hệ;

  • context (dict): bối cảnh của khung nhìn hiện tại;

  • uid (int): id của người dùng hiện tại;

  • hôm nay (str): ngày địa phương hiện tại ở định dạng YYYY-MM-DD;

  • now (str): ngày giờ cục bộ hiện tại ở định dạng YYYY-MM-DD hh:mm:ss.

Example

<field name="field_a" readonly="True"/>
<field name="field_b" invisible="context.get('show_me') and field_a == 4"/>

Example

<field name="field_a"/>
<field name="x2m">
    <!-- sub-view -->
    <form>
        <field name="field_b" invisible="parent.field_a"/>
    </form>
</field>

Hình thức

Chế độ xem biểu mẫu được sử dụng để hiển thị dữ liệu từ một bản ghi. Chúng bao gồm HTML thông thường với các thành phần cấu trúc và ngữ nghĩa bổ sung.

Phần tử gốc của chế độ xem biểu mẫu là form.

<form>
    ...
</form>

Thuộc tính gốc

Các thuộc tính tùy chọn có thể được thêm vào phần tử gốc form để tùy chỉnh chế độ xem.

string

Tiêu đề của chế độ xem. Nó chỉ được hiển thị nếu bạn mở một hành động không có tên và có mục tiêu là mới (mở hộp thoại).

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

create

Tắt/bật tính năng tạo bản ghi trên dạng xem.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

edit

Tắt/bật phiên bản bản ghi trên chế độ xem.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

duplicate

Tắt/bật sao chép bản ghi trên chế độ xem thông qua trình đơn thả xuống Hành động.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

delete

Tắt/bật tính năng xóa bản ghi trên chế độ xem thông qua danh sách thả xuống Action.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

js_class

Tên của thành phần JavaScript mà webclient sẽ khởi tạo thay vì dạng xem biểu mẫu.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

disable_autofocus

Tắt tiêu điểm tự động trên trường đầu tiên trong chế độ xem.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

banner_route

Lộ trình tìm nạp HTML từ đó và thêm nó vào chế độ xem.

Nếu thuộc tính này được đặt, URL của controller Route sẽ được tìm nạp và nội dung trả về sẽ được hiển thị phía trên chế độ xem. Phản hồi JSON từ bộ điều khiển phải chứa khóa html.

Nếu HTML chứa thẻ <link> cho biểu định kiểu, thẻ này sẽ bị xóa khỏi vị trí ban đầu và được thêm vào phần <head>.

Để tương tác với phần phụ trợ, hãy sử dụng thẻ <a type="action">. Để biết thêm chi tiết, hãy tham khảo tài liệu về phương thức _onActionClicked trong AbstractController.

Chỉ các chế độ xem mở rộng AbstractViewAbstractController, chẳng hạn như Hình thức, Kanban, và Danh sách, mới có thể sử dụng cái này thuộc tính.

Example

<tree banner_route="/module_name/hello" />
class MyController(odoo.http.Controller):
    @http.route('/module_name/hello', auth='user', type='json')
    def hello(self):
        return {
            'html': """
                <div>
                    <link href="/module_name/static/src/css/banner.css"
                        rel="stylesheet">
                    <h1>hello, world</h1>
                </div> """
        }
yêu cầu

Không bắt buộc

kiểu

con đường

mặc định

''

Thành phần ngữ nghĩa

Các thành phần ngữ nghĩa liên kết với hệ thống SoOn và cho phép tương tác với nó.

Chế độ xem biểu mẫu chấp nhận các thành phần ngữ nghĩa con sau: field, label, button, Tiện ích trò chuyện, và Tiện ích xem trước tệp đính kèm.

Phần giữ chỗ được viết hoa tất cả.

field: hiển thị giá trị trường

Phần tử field hiển thị (và có thể cho phép chỉnh sửa) một trường duy nhất của bản ghi hiện tại.

Hỗ trợ sử dụng cùng một trường nhiều lần trong chế độ xem biểu mẫu và các trường có thể nhận các giá trị khác nhau cho thuộc tính invisiblereadonly. Các trường này có thể có cùng giá trị nhưng có thể được hiển thị khác nhau. Tuy nhiên, hành vi này không được đảm bảo khi có một số trường tồn tại với các giá trị khác nhau cho thuộc tính required.

<form>
    <field name="FIELD_NAME"/>
</form>

Phần tử field có thể có các thuộc tính sau:

name

Tên của trường cần hiển thị.

yêu cầu

Bắt buộc

kiểu

str

id

Id nút. Hữu ích khi có nhiều lần xuất hiện của cùng một trường trong chế độ xem (xem label: hiển thị nhãn trường).

yêu cầu

Không bắt buộc

kiểu

str

mặc định

Tên trường

string

Nhãn của trường.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

Thuộc tính string của trường của mô hình

help

Chú giải công cụ được hiển thị khi di chuột vào trường hoặc nhãn của nó.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

widget

Phương thức hiển thị và ngữ cảnh sẽ sử dụng thay cho phương thức mặc định được gán cho loại của trường (ví dụ: Char, Many2one). Xem Lĩnh vực.

Example

<form>
    <field name="tag_ids" widget="many2many_tags"/>
</form>
<tree>
    <field name="sequence" widget="handle"/>
    <field name="level_progress" widget="progressbar"/>
</tree>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

options

Các tùy chọn cấu hình cho tiện ích của trường (bao gồm các tiện ích mặc định), dưới dạng biểu thức Python ước tính thành một lệnh.

Đối với các trường quan hệ, có sẵn các tùy chọn sau: no_create, no_quick_create, no_openno_create_edit.

Example

<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'FIELD_NAME', 'no_quick_create': True}"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

{}

readonly

Người dùng có thể sửa đổi trường này hay không (False) hay chỉ đọc (True), dưới dạng biểu thức Python đánh giá thành bool.

Example

<field name="fname_a" readonly="True"/>
<field name="fname_b" readonly="name_a in [fname_b, parent.fname_d]"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

required

Trường có thể được để trống (False) hay phải được đặt (True), dưới dạng biểu thức Python đánh giá thành bool.

Example

<field name="fname_a" required="True"/>
<field name="fname_b" required="fname_c != 3"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

groups

Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử ! phủ định để loại trừ chúng.

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

domain

Các bộ lọc áp dụng khi hiển thị các bản ghi hiện có để lựa chọn, dưới dạng biểu thức Python ước tính thành domain.

Example

<field name="fname" domain="[('fname_a', '=', parent.fname_b)]"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

[]

phạm vi

Các trường quan hệ

context

Ngữ cảnh được sử dụng khi tìm nạp các giá trị có thể có và tạo hoặc tìm kiếm bản ghi, dưới dạng biểu thức Python đánh giá thành một lệnh.

Example

<field name="fname" context="{
    'TYPE_view_ref': 'ADDON.MODEL_view_TYPE',
    'group_by': 'FIELD_NAME',
    'default_FIELD_NAME': ANY,
    'search_default_FIELD_NAME': True,
    'OTHER_BUSINESS_KEY': ANY,
  }"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

{}

phạm vi

Các trường quan hệ

nolabel

Có nên ẩn nhãn trường hay không.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

phạm vi

Các trường là con trực tiếp của phần tử group

placeholder

Thông báo trợ giúp sẽ hiển thị trên các trường trống. Nó có thể thay thế nhãn trường ở dạng phức tạp. Tuy nhiên, nó không nên là một ví dụ về dữ liệu vì người dùng có thể nhầm lẫn văn bản giữ chỗ với các trường đã điền.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

mode

Danh sách các chế độ hiển thị (loại xem) được phân tách bằng dấu phẩy để sử dụng cho các bản ghi được liên kết của trường. Các chế độ được phép là: cây, biểu mẫu, kanbanbiểu đồ.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

cây

phạm vi

One2manyMany2many các trường

class

Lớp HTML để đặt trên phần tử được tạo.

Kiểu dáng sử dụng khung BootstrapUI icon. Các lớp SoOn phổ biến bao gồm:

  • oe_inline: ngăn chặn việc ngắt dòng thông thường sau các trường và giới hạn khoảng cách của chúng;

  • oe_left, oe_right: thả nổi phần tử theo hướng tương ứng;

  • oe_read_only, oe_edit_only: chỉ hiển thị phần tử ở chế độ biểu mẫu tương ứng;

  • oe_avatar: dành cho trường hình ảnh, hiển thị hình ảnh dưới dạng "hình đại diện" (hình vuông tối đa 90x90);

  • oe_stat_button: xác định một kết xuất cụ thể để hiển thị động thông tin trong khi có thể nhấp vào để nhắm mục tiêu một hành động.

Example

<field name="fname" class="oe_inline oe_left oe_avatar"/>

Example

<button type="object" name="ACTION" class="oe_stat_button" icon="FONT_AWESOME" help="HELP">
   <div class="o_field_widget o_stat_info">
      <span class="o_stat_value"><FIELD/></span>
      <span class="o_stat_text">TEXT</span>
   </div>
</button>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

filename

Tên của trường liên quan cung cấp tên của tệp.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

phạm vi

Binary các trường

password

Liệu trường có lưu trữ mật khẩu hay không và do đó dữ liệu của nó sẽ không được hiển thị.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

phạm vi

Char các trường

kanban_view_ref

XMLID của Kanban view record cụ thể sẽ được sử dụng khi chọn bản ghi trong môi trường di động.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

phạm vi

Các trường quan hệ

default_focus

Trường có được tập trung hay không khi chế độ xem mở ra. Nó chỉ có thể được áp dụng cho một trường của một khung nhìn.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

Ghi chú

Các nút Các trường quan hệ có thể chứa các lượt xem phụ cụ thể.

Example

<field name="children_ids">
   <tree>
      <field name="name"/>
   </tree>
   <form>
      <field name="id"/>
      <field name="name"/>
   </form>
</field>

label: hiển thị nhãn trường

Khi thành phần field không được đặt trực tiếp bên trong group hoặc khi thuộc tính nolabel của nó được đặt, nhãn của trường không được tự động hiển thị cùng với giá trị của nó. Thành phần label là cách thay thế thủ công để hiển thị nhãn của một trường.

<form>
    <div class="col col-md-auto">
        <label for="FIELD_NAME" string="LABEL"/>
        <div>
            <field name="FIELD_NAME" class="oe_inline"/>
        </div>
    </div>
</form>

Phần tử label có thể có các thuộc tính sau:

for

Tham chiếu đến trường được liên kết với nhãn. Nó có thể là tên của trường hoặc id của nó (thuộc tính id được đặt trên field).

Khi có một số lần xuất hiện của cùng một trường trong chế độ xem và có một số thành phần nhãn được liên kết với các nút trường này, các nhãn này phải có thuộc tính for duy nhất; trong trường hợp này, tham chiếu thuộc tính id của các nút trường tương ứng.

yêu cầu

Bắt buộc

kiểu

str

string

Nhãn để hiển thị.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

Nhãn của trường đến từ định nghĩa trường trên mô hình

class

Lớp HTML để đặt trên phần tử được tạo.

Kiểu dáng sử dụng khung BootstrapUI icon. Các lớp SoOn phổ biến bao gồm:

  • oe_inline: ngăn chặn việc ngắt dòng thông thường sau các trường và giới hạn khoảng cách của chúng;

  • oe_left, oe_right: thả nổi phần tử theo hướng tương ứng;

  • oe_read_only, oe_edit_only: chỉ hiển thị phần tử ở chế độ biểu mẫu tương ứng;

  • oe_avatar: dành cho trường hình ảnh, hiển thị hình ảnh dưới dạng "hình đại diện" (hình vuông tối đa 90x90);

  • oe_stat_button: xác định một kết xuất cụ thể để hiển thị động thông tin trong khi có thể nhấp vào để nhắm mục tiêu một hành động.

Example

<field name="fname" class="oe_inline oe_left oe_avatar"/>

Example

<button type="object" name="ACTION" class="oe_stat_button" icon="FONT_AWESOME" help="HELP">
   <div class="o_field_widget o_stat_info">
      <span class="o_stat_value"><FIELD/></span>
      <span class="o_stat_text">TEXT</span>
   </div>
</button>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

button: hiển thị các nút hành động

<form>
    <button type="object" name="ACTION" string="LABEL"/>
    <button type="object" name="ACTION" icon="FONT_AWESOME"/>
</form>

Phần tử button có thể có các thuộc tính sau:

type

Loại nút cho biết nó hoạt động như thế nào. Nó có thể có hai giá trị khác nhau:

object

Gọi một phương thức trên mô hình của khung nhìn. name của nút là phương thức được gọi với ID bản ghi hiện tại và ngữ cảnh hiện tại.

action

Tải và thực thi bản ghi hành động ir.actions. name của nút là XMLID của hành động cần tải. ngữ cảnh được mở rộng với mô hình của khung nhìn (dưới dạng active_model) và với bản ghi hiện tại (dưới dạng active_id).

Example

<button type="object" name="action_create_new" string="Create document"/>
<button type="action" name="addon.action_create_view" string="Create and Edit"/>
yêu cầu

Bắt buộc nếu thuộc tính đặc biệt không được đặt

kiểu

str

name

Phương thức gọi nếu typeobject. XMLID của hành động sẽ tải nếu loạihành động, ở định dạng thô hoặc ở định dạng %(XMLID)d.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

string

Văn bản của nút nếu không có icon, nếu không thì văn bản alt cho biểu tượng.

Example

<button type="object" name="action_create_new" string="Create document"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

icon

Biểu tượng được sử dụng để hiển thị nút. Xem icons để biết danh sách tham khảo.

Example

<button type="object" name="remove" icon="fa-trash"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

help

Thông báo chú giải công cụ hiển thị khi di chuột bằng con trỏ chuột.

Example

<button type="object" name="remove" icon="fa-trash" help="Revoke"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

context

Ngữ cảnh được hợp nhất vào ngữ cảnh của dạng xem khi thực hiện lệnh gọi nút, dưới dạng biểu thức Python đánh giá thành một lệnh.

Example

<button name="button_confirm" type="object" context="{'BUSINESS_KEY': ANY}" string="LABEL"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

{}

groups

Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử ! phủ định để loại trừ chúng.

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

class

Lớp HTML để đặt trên phần tử được tạo.

Kiểu dáng sử dụng khung BootstrapUI icon. Các lớp SoOn phổ biến bao gồm:

  • oe_inline: ngăn chặn việc ngắt dòng thông thường sau các trường và giới hạn khoảng cách của chúng;

  • oe_left, oe_right: thả nổi phần tử theo hướng tương ứng;

  • oe_read_only, oe_edit_only: chỉ hiển thị phần tử ở chế độ biểu mẫu tương ứng;

  • oe_avatar: dành cho trường hình ảnh, hiển thị hình ảnh dưới dạng "hình đại diện" (hình vuông tối đa 90x90);

  • oe_stat_button: xác định một kết xuất cụ thể để hiển thị động thông tin trong khi có thể nhấp vào để nhắm mục tiêu một hành động.

Example

<field name="fname" class="oe_inline oe_left oe_avatar"/>

Example

<button type="object" name="ACTION" class="oe_stat_button" icon="FONT_AWESOME" help="HELP">
   <div class="o_field_widget o_stat_info">
      <span class="o_stat_value"><FIELD/></span>
      <span class="o_stat_text">TEXT</span>
   </div>
</button>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

special

Hoạt động của nút dành cho chế độ xem biểu mẫu được mở trong hộp thoại. Nó có thể có hai giá trị khác nhau:

save

Lưu bản ghi và đóng hộp thoại.

cancel

Đóng hộp thoại mà không lưu.

Example

<button special="cancel" icon="fa-trash"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

confirm

Thông báo xác nhận sẽ hiển thị (và để người dùng chấp nhận) trước khi thực hiện hành động của nút.

Example

<button name="action_destroye_gate" string="Send the goa'uld" type="object" confirm="Do you confirm the action?"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

data-hotkey

Phím nóng (keyboard_shortcut, tương tự như accesskey) được liên kết với nút. Nó được bật khi phím alt được nhấn cùng với ký tự đã chọn hoặc cùng với phím shift và ký tự đã chọn khi shift+ được thêm vào trước giá trị.

Example

<button type="object" name="action_confirm" string="Confirm" data-hotkey="c"/>
<button type="object" name="action_tear" string="Tear the sheet" data-hotkey="shift+k"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

Tiện ích trò chuyện

chatter widget là công cụ giao tiếp và ghi nhật ký cho phép gửi email trực tiếp cho đồng nghiệp và khách hàng từ một bản ghi (nhiệm vụ, đơn hàng, hóa đơn, sự kiện, ghi chú...).

Nó được thêm phần tử div với lớp oe_chatter khi mô hình kế thừa mixin mail.thread.

Example

<form>
    <sheet>
        ...
    </sheet>
    <div class="oe_chatter">
        <field name="message_follower_ids"/>
        <field name="activity_ids"/>
        <field name="message_ids" options="OPTIONS"/>
    </div>
</form>

Tiện ích xem trước tệp đính kèm

Tiện ích xem trước tệp đính kèm được thêm phần tử trống div với lớp o_attachment_preview.

Example

<form>
    <sheet>
        ...
    </sheet>
    <div class="o_attachment_preview"/>
<form>

Thành phần kết cấu

Các thành phần cấu trúc cung cấp cấu trúc hoặc các tính năng "trực quan" với ít logic. Chúng được sử dụng làm phần tử hoặc tập hợp phần tử trong dạng xem biểu mẫu.

Các dạng xem biểu mẫu chấp nhận các thành phần cấu trúc con sau: group, sheet, notebook, notebook, newline, separator, header, footer, Hộp chứa nút, và Vùng chứa tiêu đề.

Phần giữ chỗ được viết hoa tất cả.

group: xác định bố cục cột

Phần tử group được sử dụng để xác định bố cục cột trong biểu mẫu. Theo mặc định, các nhóm xác định 2 cột và hầu hết các nhóm con trực tiếp của nhóm đều có một cột duy nhất.

field các phần tử là con trực tiếp của các nhóm hiển thị một nhãn theo mặc định, đồng thời nhãn và chính trường đó có colspan1 mỗi phần.

Trẻ em được xếp theo chiều ngang (chúng cố gắng điền vào cột tiếp theo trước khi đổi hàng).

 <form>
     <group>
         ...
     </group>
</form>

Phần tử group có thể có các thuộc tính sau:

string

Tiêu đề được hiển thị cho nhóm.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

col

Số lượng cột trong một nhóm.

yêu cầu

Không bắt buộc

kiểu

int

mặc định

2

colspan

Số cột được lấy bởi một phần tử con.

yêu cầu

Không bắt buộc

kiểu

int

mặc định

1

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/form_group.svg
<group>
    <field name="a" string="custom"/>
    <field name="b"/>
</group>
<group string="title 1">
    <group string="title 2">
        <field name="c"/>
        <field name="d"/>
    </group>
    <group>
        <field name="e"/>
        <field name="f"/>
        <field name="g"/>
    </group>
</group>
<group col="12">
    <group colspan="8">
        <field name="h"/>
    </group>
    <group colspan="4">
        <field name="i"/>
    </group>
</group>

sheet: làm cho bố cục phản hồi nhanh

Phần tử sheet có thể được sử dụng làm phần tử con trực tiếp của phần tử gốc form để có bố cục biểu mẫu hẹp hơn và phản hồi nhanh hơn (trang ở giữa, lề...). Nó thường chứa các phần tử group.

<form>
    <sheet>
        ...
    </sheet>
</form>

notebook & page: thêm các phần theo thẻ

Phần tử notebook xác định một phần được gắn thẻ. Mỗi tab được xác định thông qua phần tử con page.

Phần tử notebook không được đặt trong phần tử group.

<form>
    <notebook>
        <page string="LABEL">
            ...
        </page>
    </notebook>
</form>

Phần tử page có thể có các thuộc tính sau:

string

Tiêu đề của tab.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/form_notebook.svg
<form>
    <notebook>
        <page string="Page1">
            ...
        </page>
        <page string="Page2">
            ...
        </page>
    </notebook>
</form>

newline: bắt đầu các hàng nhóm mới

Phần tử newline được sử dụng trong các phần tử group để kết thúc sớm hàng hiện tại và ngay lập tức chuyển sang hàng mới mà không cần điền trước bất kỳ cột nào còn lại.

<form>
    <group>
        ...
        <newline/>
        ...
    </group>
</form>

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/form_newline.svg
<form>
    <group string="Title 1">
        <group string="Title 1.1">...</group>
        <newline/>
        <group string="Title 1.2">...</group>
        <group string="Title 1.3">...</group>
    </group>
</form>

dấu phân cách: thêm khoảng cách ngang

Phần tử dấu phân cách thêm khoảng cách dọc giữa các phần tử trong một nhóm.

<form>
    ...
    <separator/>
    ...
</form>

Phần tử <separator> có thể có các thuộc tính sau:

string

Tiêu đề như một tiêu đề phần.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/form_separator.svg
<form>
    <group>
        <FIELD/>
        <separator string="Title 1"/>
        <FIELD/>
        <group>
            <FIELD/>
            <separator string="Title 2"/>
            <FIELD/>
        </group>
        <group>
            <FIELD/>
            <FIELD/>
        </group>
    </group>
</form>

Mẹo

Phần tử dấu phân cách có thể được sử dụng để đạt được sự phân tách trực quan giữa các phần tử trong cùng một phần tử nhóm bên trong trong khi vẫn giữ chúng được căn chỉnh theo chiều ngang.

header: hiển thị các nút quy trình công việc và trạng thái

Phần tử header được kết hợp với phần tử sheet cung cấp một vị trí có chiều rộng đầy đủ phía trên trang tính thường được sử dụng để hiển thị quy trình làm việc button và một phần tử field được hiển thị dưới dạng tiện ích trạng thái.

<form>
    <header>
        <BUTTONS/>
    </header>
    <sheet>
        ...
    </sheet>
</form>

Example

<header>
    <button string="Reset" type="object" name="set_draft" invisible="state != 'done'"/>
    <field name="state" widget="statusbar" statusbar_visible="draft,posted" options="{'clickable': 1}"/>
</header>

Hộp chứa nút

Bạn có thể tạo vùng chứa phần tử button bằng phần tử div với lớp button_box.

<form>
    <div name="button_box">
        <BUTTONS/>
    </div>
<form>

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/form_button_box.svg
<form>
    <div name="button_box">
        <button type="edit" name="edit" icon="fa-edit" string="Button1"/>
        <button type="object" name="my_action" icon="fa-dollar">
            <field name="total_inv" widget="statinfo" string="Invoices"/>
        </button>
    </div>
<form>

Vùng chứa tiêu đề

Vùng chứa phần tử title field có thể được tạo bằng phần tử div với lớp oe_title.

<form>
    <sheet>
        <div class="oe_title">
            <h1><FIELD/></h1>
        </div>
    </sheet>
<form>

Cài đặt

Chế độ xem cài đặt là tùy chỉnh của chế độ xem form. Chúng được sử dụng để hiển thị các cài đặt ở một nơi tập trung. Chúng khác với dạng xem biểu mẫu chung ở chỗ chúng có thanh tìm kiếm và thanh bên.

Example

<app string="CRM" name="crm">
    <setting type="header" string="Foo">
        <field name="foo" title="Foo?."/>
        <button name="nameAction" type="object" string="Button"/>
    </setting>
    <block title="Title of group Bar">
        <setting help="this is bar" documentation="/applications/technical/web/settings/this_is_a_test.html">
            <field name="bar"/>
        </setting>
        <setting string="This is Big BAR" company_specific="1">
            <field name="bar"/>
        </setting>
    </block>
    <block title="Title of group Foo">
        <setting string="Personalize setting" help="this is full personalize setting">
            <div>This is a different setting</div>
        </setting>
    </block>
</app>

Các thành phần

Chế độ xem cài đặt chấp nhận field, labelbutton view, cũng như ba phần tử con bổ sung: app, block, và setting.

Phần giữ chỗ được viết hoa tất cả.

app: khai báo ứng dụng

Phần tử app được sử dụng để khai báo ứng dụng trên chế độ xem cài đặt. Nó tạo một mục có logo của ứng dụng trên thanh bên của chế độ xem. Nó cũng hoạt động như dấu phân cách khi tìm kiếm.

<form>
    <app string="NAME" name="TECHNICAL_NAME">
    ...
    </app>
</form>

Phần tử app có thể có các thuộc tính sau:

string

Tên của ưng dụng.

yêu cầu

Bắt buộc

kiểu

str

name

Tên kỹ thuật của ứng dụng (tên của mô-đun).

yêu cầu

Bắt buộc

kiểu

str

logo

Đường dẫn tương đối tới logo.

yêu cầu

Không bắt buộc

kiểu

con đường

mặc định

Một đường dẫn được tính toán với thuộc tính name: /name/static/description/icon.png

groups

Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử ! phủ định để loại trừ chúng.

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

block: khai báo một nhóm cài đặt

Phần tử block được sử dụng để khai báo một nhóm cài đặt. Nhóm này có thể có tiêu đề và mô tả.

 <form>
     <app string="NAME" name="TECHNICAL_NAME">
         ...
         <block title="TITLE">
             ...
         </block>
         ...
     </app>
</form>

Phần tử block có thể có các thuộc tính sau:

title

Tiêu đề của khối cài đặt. Người ta có thể tìm kiếm trên giá trị của nó.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

help

Mô tả khối cài đặt. Người ta có thể tìm kiếm trên giá trị của nó.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

groups

Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử ! phủ định để loại trừ chúng.

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

setting: khai báo cài đặt

Phần tử setting được sử dụng để khai báo chính cài đặt đó.

Phần tử field đầu tiên trong cài đặt được sử dụng làm trường chính. Nó được đặt ở bảng bên trái nếu nó là trường boolean và ở trên cùng của bảng bên phải nếu không. Trường này cũng được sử dụng để tạo nhãn cài đặt nếu thuộc tính string không được xác định.

Phần tử setting cũng có thể chứa các phần tử bổ sung (ví dụ: HTML). Tất cả những yếu tố đó được hiển thị trong bảng bên phải.

<form>
    <app string="NAME" name="TECHNICAL_NAME">
        <block title="TITLE">
            ...
            <setting string="SETTING_NAME">
                ...
                <field name="FIELD_NAME"/>
                ...
            </setting>
            ...
        </block>
    </app>
</form>

Phần tử <setting> có thể có các thuộc tính sau:

type

Theo mặc định, một cài đặt được phân tách trực quan trên hai bảng (trái và phải) và được sử dụng để chỉnh sửa field nhất định. Thay vào đó, bằng cách xác định type="header", một loại cài đặt đặc biệt sẽ được hiển thị. Cài đặt này được sử dụng để sửa đổi phạm vi của các cài đặt khác. Ví dụ: trên ứng dụng Trang web, cài đặt này được sử dụng để cho biết các cài đặt khác áp dụng cho trang web nào. Cài đặt tiêu đề được thể hiện trực quan dưới dạng biểu ngữ ở đầu màn hình.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

string

Văn bản được sử dụng làm nhãn của cài đặt.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

Nhãn của trường đầu tiên

title

Văn bản được sử dụng làm chú giải công cụ.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

help

Mô tả của cài đặt. Văn bản này được hiển thị ngay bên dưới nhãn cài đặt (với lớp text-muted).

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

company_dependent

Liệu cài đặt có dành riêng cho công ty hay không. Nếu được đặt, một biểu tượng sẽ hiển thị bên cạnh nhãn cài đặt.

Nó chỉ chấp nhận giá trị '1'.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

documentation

đường dẫn tới tài liệu về cài đặt. Nếu được đặt, biểu tượng có thể nhấp sẽ hiển thị bên cạnh nhãn cài đặt. Đường dẫn có thể là đường dẫn tuyệt đối hoặc đường dẫn tương đối. Trong trường hợp sau, nó có liên quan đến https://www.odoo.com/documentation/<version>.

yêu cầu

Không bắt buộc

kiểu

đường dẫn_

mặc định

''

groups

Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử ! phủ định để loại trừ chúng.

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

Danh sách

Phần tử gốc của chế độ xem danh sách là tree1.

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/list.svg
<tree>
    ...
</tree>

Thuộc tính gốc

Các thuộc tính tùy chọn có thể được thêm vào phần tử gốc tree để tùy chỉnh chế độ xem.

string

Tiêu đề của chế độ xem. Nó chỉ được hiển thị nếu bạn mở một hành động không có tên và có mục tiêu là mới (mở hộp thoại).

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

create

Tắt/bật tính năng tạo bản ghi trên dạng xem.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

edit

Tắt/bật phiên bản bản ghi trên chế độ xem.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

delete

Tắt/bật tính năng xóa bản ghi trên chế độ xem thông qua danh sách thả xuống Action.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

import

Tắt/bật nhập bản ghi từ dữ liệu trên dạng xem.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

export_xlsx

Tắt/bật xuất bản ghi sang dữ liệu trên dạng xem.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

editable

Làm cho các bản ghi của dạng xem có thể chỉnh sửa tại chỗ và cho phép tạo bản ghi mới từ một hàng của danh sách. Nó có thể có hai giá trị khác nhau:

top

Các bản ghi mới được tạo từ đầu danh sách.

bottom

Các bản ghi mới được tạo từ cuối danh sách.

Kiến trúc cho chế độ xem nội tuyến form được lấy từ chế độ xem danh sách. Do đó, hầu hết các thuộc tính hợp lệ trên các trường và nút của chế độ xem biểu mẫu đều được chế độ xem danh sách chấp nhận, mặc dù chúng có thể không có ý nghĩa gì nếu chế độ xem danh sách không thể chỉnh sửa được.

Quan trọng

Hành vi này bị vô hiệu hóa nếu thuộc tính edit được đặt thành False.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

multi_edit

Kích hoạt tính năng chỉnh sửa đa dạng cho phép cập nhật một trường thành cùng một giá trị cho nhiều bản ghi cùng một lúc.

Nó chỉ chấp nhận giá trị '1'.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

open_form_view

Hiển thị một nút ở cuối mỗi hàng để mở bản ghi ở dạng xem biểu mẫu.

Nó không có hiệu lực nếu chế độ xem không thể chỉnh sửa được.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

default_group_by

Tên của trường mà các bản ghi sẽ được nhóm theo mặc định nếu không có nhóm nào được chỉ định thông qua hành động hoặc search hiện tại.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

default_order

Danh sách các tên trường được phân tách bằng dấu phẩy sẽ ghi đè thứ tự được xác định trên mô hình thông qua thuộc tính _order.

Để đảo ngược thứ tự sắp xếp của một trường, hãy đặt hậu tố cho trường đó bằng desc, cách nhau bằng dấu cách.

Example

<tree default_order="sequence,name desc">
    ...
</tree>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

decoration-<style>

Kiểu cần được áp dụng để khớp các hàng của bản ghi, dưới dạng biểu thức Python đánh giá thành bool.

<style> phải được thay thế bằng một trong các bf (đậm), it (in nghiêng), thông tin, cảnh báo, nguy hiểm, bị tắt tiếng, chínhthành công.

Example

<tree decoration-danger="field_qty &gt; field_limit">
    ...
</tree>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

limit

Kích thước mặc định của một trang. Nó phải hoàn toàn tích cực.

yêu cầu

Không bắt buộc

kiểu

int

mặc định

80 cho chế độ xem danh sách, 40 cho danh sách X2many trong chế độ xem biểu mẫu

groups_limit

Số lượng nhóm mặc định trên một trang khi chế độ xem danh sách được nhóm lại. Nó phải hoàn toàn tích cực.

yêu cầu

Không bắt buộc

kiểu

int

mặc định

80 cho chế độ xem danh sách, 40 cho danh sách X2many trong chế độ xem biểu mẫu

expand

Liệu cấp độ đầu tiên của nhóm có nên được mở theo mặc định khi chế độ xem danh sách được nhóm hay không.

Cảnh báo

Nó có thể chậm, tùy thuộc vào số lượng nhóm.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

sample

Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.

Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường display_name trên mô hình res.users sẽ được điền tên người mẫu, trong khi trường email sẽ có dạng firstname.lastname@sample.demo.

Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

banner_route

Lộ trình tìm nạp HTML từ đó và thêm nó vào chế độ xem.

Nếu thuộc tính này được đặt, URL của controller Route sẽ được tìm nạp và nội dung trả về sẽ được hiển thị phía trên chế độ xem. Phản hồi JSON từ bộ điều khiển phải chứa khóa html.

Nếu HTML chứa thẻ <link> cho biểu định kiểu, thẻ này sẽ bị xóa khỏi vị trí ban đầu và được thêm vào phần <head>.

Để tương tác với phần phụ trợ, hãy sử dụng thẻ <a type="action">. Để biết thêm chi tiết, hãy tham khảo tài liệu về phương thức _onActionClicked trong AbstractController.

Chỉ các chế độ xem mở rộng AbstractViewAbstractController, chẳng hạn như Hình thức, Kanban, và Danh sách, mới có thể sử dụng cái này thuộc tính.

Example

<tree banner_route="/module_name/hello" />
class MyController(odoo.http.Controller):
    @http.route('/module_name/hello', auth='user', type='json')
    def hello(self):
        return {
            'html': """
                <div>
                    <link href="/module_name/static/src/css/banner.css"
                        rel="stylesheet">
                    <h1>hello, world</h1>
                </div> """
        }
yêu cầu

Không bắt buộc

kiểu

con đường

mặc định

''

Các thành phần

Chế độ xem danh sách chấp nhận các phần tử con sau: field, button, groupby, header, control và tạo.

Phần giữ chỗ được viết hoa tất cả.

field: hiển thị giá trị trường

Phần tử field hiển thị (và có thể cho phép chỉnh sửa) một trường duy nhất của tất cả các bản ghi hiện tại dưới dạng cột.

Không hỗ trợ sử dụng cùng một trường nhiều lần trong chế độ xem danh sách

<tree>
    <field name="FIELD_NAME"/>
</tree>

Phần tử field có thể có các thuộc tính sau:

name

Tên của trường cần hiển thị.

yêu cầu

Bắt buộc

kiểu

str

string

Nhãn của trường.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

Thuộc tính string của trường của mô hình

optional

Làm cho khả năng hiển thị của trường là tùy chọn. Cột của trường có thể được ẩn hoặc hiển thị thông qua nút trên tiêu đề của chế độ xem.

Nó có thể có hai giá trị khác nhau:

show

Trường này được hiển thị theo mặc định.

hide

Trường này được ẩn theo mặc định.

Example

<field name="fname_a" optional="show"/>
<field name="fname_b" optional="hide"/>
yêu cầu

Không bắt buộc

kiểu

str

readonly

Người dùng có thể sửa đổi trường này hay không (False) hay chỉ đọc (True), dưới dạng biểu thức Python đánh giá thành bool.

Example

<field name="fname_a" readonly="True"/>
<field name="fname_b" readonly="name_a in [fname_b, parent.fname_d]"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

required

Trường có thể được để trống (False) hay phải được đặt (True), dưới dạng biểu thức Python đánh giá thành bool.

Example

<field name="fname_a" required="True"/>
<field name="fname_b" required="fname_c != 3"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

column_invisible

Cột hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Không giống như invisible, nó ảnh hưởng đến toàn bộ cột và được đánh giá mà không có giá trị cây con.

Example

<field name="product_is_late" column_invisible="parent.has_late_products == False"/>
<button type="object" name="action_confirm" column_invisible="context.get('hide_confirm')"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

groups

Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử ! phủ định để loại trừ chúng.

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

decoration-<style>

Kiểu nên được áp dụng cho trường của bản ghi trùng khớp, dưới dạng biểu thức Python đánh giá thành bool.

<style> phải được thay thế bằng một trong các bf (đậm), it (in nghiêng), thông tin, cảnh báo, nguy hiểm, bị tắt tiếng, chínhthành công.

Example

<field name="name" decoration-bf="1"/>
<field name="quantity" decoration-info="state == 'draft'"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

widget

Phương thức hiển thị và ngữ cảnh sẽ sử dụng thay cho phương thức mặc định được gán cho loại của trường (ví dụ: Char, Many2one). Xem Lĩnh vực.

Example

<form>
    <field name="tag_ids" widget="many2many_tags"/>
</form>
<tree>
    <field name="sequence" widget="handle"/>
    <field name="level_progress" widget="progressbar"/>
</tree>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

sum, avg

Tổng hợp để hiển thị ở cuối cột. Việc tổng hợp chỉ được tính toán trên các bản ghi hiện đang được hiển thị. Hoạt động tổng hợp phải khớp với group_operator của trường tương ứng.

Example

<field name="sent" sum="Total" />
<field name="clicks_ratio" avg="Average"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

width

Chiều rộng áp dụng cho cột của trường khi không có bản ghi nào trong danh sách, dưới dạng chiều rộng tuyệt đối (ví dụ: 100px).

Quan trọng

Độ rộng được đặt bởi webclient khi có bản ghi trong danh sách.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

nolabel

Tiêu đề cột của trường có nên để trống hay không. Nếu được đặt, cột sẽ không thể sắp xếp được.

Nó chỉ chấp nhận giá trị '1'

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

Ghi chú

Khi chế độ xem danh sách được nhóm lại, các trường số sẽ được tổng hợp và hiển thị cho từng nhóm. Ngoài ra, nếu có quá nhiều bản ghi trong một nhóm, máy nhắn tin sẽ xuất hiện ở bên phải hàng nhóm. Vì lý do này, việc đặt trường số ở cột cuối cùng là một cách làm không tốt khi chế độ xem danh sách ở trong tình huống có thể nhóm nó lại. Tuy nhiên, điều này không gây ra vấn đề gì đối với các trường X2many trong chế độ xem biểu mẫu vì chúng không thể được nhóm lại.

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/list_field.svg
<tree>
    <field name="name" string="My Custom Name"/>
    <field name="amount" sum="Total"/>
    <field name="company_id" invisible="1"/>
    <field name="currency_id"/>
    <field name="tax_id"/>
</tree>

button: hiển thị các nút hành động

<tree>
    <button type="object" name="ACTION" string="LABEL"/>
    <button type="object" name="ACTION" icon="FONT_AWESOME"/>
</tree>

Phần tử button có thể có các thuộc tính sau:

type

Loại nút cho biết nó hoạt động như thế nào. Nó có thể có hai giá trị khác nhau:

object

Gọi một phương thức trên mô hình của khung nhìn. name của nút là phương thức được gọi với ID bản ghi hiện tại và ngữ cảnh hiện tại.

action

Tải và thực thi bản ghi hành động ir.actions. name của nút là XMLID của hành động cần tải. ngữ cảnh được mở rộng với mô hình của khung nhìn (dưới dạng active_model) và với bản ghi hiện tại (dưới dạng active_id).

Example

<button type="object" name="action_create_new" string="Create document"/>
<button type="action" name="addon.action_create_view" string="Create and Edit"/>
yêu cầu

Bắt buộc nếu thuộc tính đặc biệt không được đặt

kiểu

str

name

Phương thức gọi nếu typeobject. XMLID của hành động sẽ tải nếu loạihành động, ở định dạng thô hoặc ở định dạng %(XMLID)d.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

string

Văn bản của nút nếu không có icon, nếu không thì văn bản alt cho biểu tượng.

Example

<button type="object" name="action_create_new" string="Create document"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

icon

Biểu tượng được sử dụng để hiển thị nút. Xem icons để biết danh sách tham khảo.

Example

<button type="object" name="remove" icon="fa-trash"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

help

Thông báo chú giải công cụ hiển thị khi di chuột bằng con trỏ chuột.

Example

<button type="object" name="remove" icon="fa-trash" help="Revoke"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

context

Ngữ cảnh được hợp nhất vào ngữ cảnh của dạng xem khi thực hiện lệnh gọi nút, dưới dạng biểu thức Python đánh giá thành một lệnh.

Example

<button name="button_confirm" type="object" context="{'BUSINESS_KEY': ANY}" string="LABEL"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

{}

groups

Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử ! phủ định để loại trừ chúng.

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

column_invisible

Cột hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Không giống như invisible, nó ảnh hưởng đến toàn bộ cột và được đánh giá mà không có giá trị cây con.

Example

<field name="product_is_late" column_invisible="parent.has_late_products == False"/>
<button type="object" name="action_confirm" column_invisible="context.get('hide_confirm')"/>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

class

Lớp HTML để đặt trên phần tử được tạo.

Kiểu dáng sử dụng khung BootstrapUI icon. Các lớp SoOn phổ biến bao gồm:

  • oe_inline: ngăn chặn việc ngắt dòng thông thường sau các trường và giới hạn khoảng cách của chúng;

  • oe_left, oe_right: thả nổi phần tử theo hướng tương ứng;

  • oe_read_only, oe_edit_only: chỉ hiển thị phần tử ở chế độ biểu mẫu tương ứng;

  • oe_avatar: dành cho trường hình ảnh, hiển thị hình ảnh dưới dạng "hình đại diện" (hình vuông tối đa 90x90);

  • oe_stat_button: xác định một kết xuất cụ thể để hiển thị động thông tin trong khi có thể nhấp vào để nhắm mục tiêu một hành động.

Example

<field name="fname" class="oe_inline oe_left oe_avatar"/>

Example

<button type="object" name="ACTION" class="oe_stat_button" icon="FONT_AWESOME" help="HELP">
   <div class="o_field_widget o_stat_info">
      <span class="o_stat_value"><FIELD/></span>
      <span class="o_stat_text">TEXT</span>
   </div>
</button>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/list_button.svg
<tree>
    <field name="name"/>
    <button type="edit" name="edit" icon="fa-edit" title="Edit"/>
    <button type="object" name="my_method" string="Button1" column_invisible="context.get('hide_button')" invisible="amount &gt; 3"/>
    <field name="amount"/>
    <field name="currency_id"/>
    <field name="tax_id"/>
</tree>

groupby: xác định tiêu đề nhóm

Phần tử groupby được sử dụng để xác định các tiêu đề nhóm với các phần tử button khi nhóm các bản ghi trên các trường Many2one. Nó cũng chấp nhận các phần tử field, có thể được sử dụng để sửa đổi. Do đó, các trường này thuộc về đồng mô hình Many2one. Các trường bổ sung này được tìm nạp theo đợt.

<tree>
    ...
    <groupby name="FIELD_NAME">
        <BUTTONS/>
        <FIELDS/>
    </groupby>
</tree>

Phần tử groupby có thể có các thuộc tính sau:

name

Tên của trường a Many2one để sử dụng làm tiêu đề.

Một phần tử button đặc biệt với type="edit" có thể được xác định để mở chế độ xem biểu mẫu của trường Many2one.

yêu cầu

Bắt buộc

kiểu

str

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/list_groupby.svg
<tree>
    <field name="name"/>
    <field name="amount"/>
    <field name="currency"/>
    <field name="tax_id"/>

    <groupby name="partner_id">
        <button type="edit" name="edit" icon="fa-edit" title="Edit"/>
        <field name="email"/>
        <button type="object" name="my_method" string="Button1" invisible="email == 'jhon@conor.com'"/>
    </groupby>
</tree>

Ghi chú

Các trường bên trong phần tử groupby chỉ được sử dụng để tìm nạp và lưu trữ giá trị nhưng chúng không bao giờ được hiển thị.

header: hiển thị các nút quy trình công việc

<tree>
    <header>
        <BUTTONS/>
    </header>
    ...
</tree>

Phần tử header chấp nhận các phần tử con sau:

button

Phần tử button cho phép xác định các nút trong bảng điều khiển. Nó là phần tử giống như phần tử button trong chế độ xem danh sách, nhưng nó chấp nhận thêm một thuộc tính khi được đặt bên trong phần tử header:

display

Cung cấp nút này mọi lúc mà không cần phải chọn bản ghi.

Nó chỉ chấp nhận giá trị luôn.

Example

<header>
    <button name="toDoAlways" type="object" string="Always displayed" display="always"/>
    <button name="toDoSelection" type="object" string="Displayed if selection"/>
</header>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/list_header.svg
<tree>
    <header>
        <button type="object" name="to_draft" string="Button1" invisible="context.get('hide_button')"/>
    </header>
    <field name="name"/>
    <field name="amount"/>
    <field name="currency"/>
    <field name="tax_id"/>
</tree>

control & create: thêm các nút tạo nội tuyến

Phần tử control xác định một hàng điều khiển chấp nhận các nút tạo. Mỗi nút tạo được xác định thông qua phần tử create.

<tree>
   <control>
       <create string="LABEL"/>
       <BUTTONS/>
    </control>
    ...
</tree>

Phần tử control không có thuộc tính.

Phần tử create có thể có các thuộc tính sau:

string

Văn bản của nút.

yêu cầu

Bắt buộc

kiểu

str

context

Ngữ cảnh được hợp nhất vào ngữ cảnh của dạng xem khi thực hiện lệnh gọi nút, dưới dạng biểu thức Python đánh giá thành một lệnh.

yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

{}

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/list_control.svg
<tree>
    <field name="name"/>
    <field name="amount"/>
    <field name="currency"/>
    <field name="tax_id"/>
    <control>
        <create string="Add a item"/>
        <create string="Add a section" context="{'default_type': 'section'}"/>
        <create string="Add a note" context="{'default_type': 'note'}"/>
    </control>
</tree>

Ghi chú

Việc sử dụng phần tử control chỉ có ý nghĩa nếu chế độ xem danh sách nằm trong trường One2many hoặc Many2many. Nếu bất kỳ phần tử create nào được xác định, nó sẽ ghi đè nút add a line mặc định.

1

Vì lý do lịch sử, nó có nguồn gốc từ các chế độ xem kiểu cây, sau đó được chuyển đổi mục đích sang hiển thị kiểu bảng/danh sách hơn

Các thành phần

Chế độ xem tìm kiếm chấp nhận các phần tử con sau: field, filter, separator, group, và searchpanel.

Phần giữ chỗ được viết hoa tất cả.

field: lọc dựa trên giá trị trường

Phần tử field xác định miền hoặc ngữ cảnh với các giá trị do người dùng cung cấp. Khi các miền tìm kiếm được tạo, các miền trường được nối với nhau và với các bộ lọc bằng toán tử AND.

<search>
    <field name="FIELD_NAME"/>
</search>

Phần tử field có thể có các thuộc tính sau:

name

Tên của trường để lọc.

yêu cầu

Bắt buộc

kiểu

str

string

Nhãn của trường.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

Thuộc tính string của trường của mô hình

operator

Theo mặc định, các trường tạo các miền có dạng [(name, operator, value)], trong đó name là tên của trường và value là giá trị do người dùng cung cấp, có thể được lọc hoặc chuyển đổi (ví dụ: người dùng phải cung cấp nhãn cho giá trị của trường lựa chọn chứ không phải chính giá trị đó).

Thuộc tính toán tử cho phép ghi đè toán tử mặc định, tùy thuộc vào loại của trường (ví dụ: = đối với trường float, nhưng ilike đối với trường char và child_of đối với many2one).

yêu cầu

Không bắt buộc

kiểu

str

mặc định

=

filter_domain

Miền được sử dụng làm miền tìm kiếm của trường, dưới dạng biểu thức Python đánh giá thành domain.

Nó có thể sử dụng biến self để đưa giá trị được cung cấp vào miền tùy chỉnh. Nó có thể được sử dụng để tạo các miền linh hoạt hơn đáng kể so với chỉ sử dụng thuộc tính toán tử (ví dụ: tìm kiếm trên nhiều trường cùng một lúc).

Nếu cả hai thuộc tính toán tửfilter_domain đều được cung cấp thì filter_domain sẽ được ưu tiên.

yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

[]

context

Ngữ cảnh để hợp nhất vào ngữ cảnh của chế độ xem mà chế độ xem tìm kiếm đang nhắm mục tiêu, dưới dạng biểu thức Python đánh giá thành một lệnh.

Nó có thể chứa các giá trị do người dùng cung cấp, có sẵn trong biến self.

yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

{}

domain

Các bộ lọc áp dụng cho kết quả hoàn thành của các trường cho phép tự động hoàn thành (ví dụ: Many2one).

yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

[]

groups

Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử ! phủ định để loại trừ chúng.

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/search_field.svg
<search>
    <field name="name" string="My Custom Name"/>
    <field name="amount"/>
    <field name="company_id" invisible="1"/>
    <field name="currency_id"/>
    <field name="ref" filter_domain="[('name', 'like', self)]"/>
</search>

filter: tạo các bộ lọc được xác định trước

Phần tử filter được sử dụng để tạo các bộ lọc được xác định trước có thể được chuyển đổi trong chế độ xem tìm kiếm. Nó cho phép thêm dữ liệu vào ngữ cảnh tìm kiếm ngữ cảnh được chuyển đến chế độ xem dữ liệu để tìm kiếm/lọc hoặc thêm các phần mới vào bộ lọc tìm kiếm.

<search>
    <filter string="LABEL" domain="DOMAIN"/>
</search>

Phần tử filter có thể có các thuộc tính sau:

name

Tên kỹ thuật của bộ lọc. Nó có thể được sử dụng để bật nó theo mặc định hoặc dưới dạng inheritance hook.

yêu cầu

Bắt buộc

kiểu

str

string

Nhãn của bộ lọc.

yêu cầu

Bắt buộc

kiểu

str

help

Chú giải công cụ được hiển thị khi di chuột qua bộ lọc.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

domain

Miền để nối vào miền của hành động như một phần của miền tìm kiếm.

yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

[]

date

Tên của trường date hoặc datetime để lọc.

Khi được sử dụng, thuộc tính này sẽ tạo một tập hợp các bộ lọc có sẵn trong menu phụ của menu Filters. Các bộ lọc có sẵn phụ thuộc vào thời gian nhưng không linh hoạt theo nghĩa là miền của chúng được đánh giá tại thời điểm khởi tạo bảng điều khiển.

Example

<filter string="Creation Date" name="filter_create_date" date="create_date"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

default_period

Khoảng thời gian mặc định của bộ lọc dựa trên thời gian (với thuộc tính date). Nó phải là một trong hoặc một danh sách được phân tách bằng dấu phẩy của hôm nay, this_week, this_month, last_month, antepenultimate_month, fourth_quarter, third_quarter, second_quarter, first_quarter, năm này, năm ngoái hoặc năm áp chót.

Bộ lọc phải nằm trong bộ bộ lọc mặc định được kích hoạt khi khởi tạo chế độ xem.

Example

<filter string="Creation Date" name="filter_create_date" date="create_date" default_period="this_year,last_year"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

tháng_này

phạm vi

Bộ lọc có thuộc tính date không trống

invisible

Phần tử hiển thị (False) hay ẩn (True), dưới dạng biểu thức Python đánh giá thành bool.

Ghi chú

Có hai cách sử dụng thuộc tính invisible:

  • Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.

  • Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.

Example

<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field -->
<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

Sai

groups

Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử ! phủ định để loại trừ chúng.

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

context

Bối cảnh được hợp nhất vào miền của hành động để tạo miền tìm kiếm

Khóa ngữ cảnh group_by được đặt với một trường làm giá trị có thể được sử dụng để xác định một nhóm có sẵn trong menu Group By. Khi trường thuộc loại date hoặc datetime, bộ lọc sẽ tạo một menu con của menu Group By với các tùy chọn khoảng thời gian khả dụng sau: Year, Quarter, Tháng, Tuần, và Ngày. Khi bộ lọc nằm trong bộ bộ lọc mặc định được kích hoạt khi khởi tạo chế độ xem, các bản ghi sẽ được nhóm theo tháng theo mặc định. Điều này có thể được thay đổi bằng cách sử dụng cú pháp date_field:interval.

Example

<filter string="Category" name="groupby_category" context="{'group_by': 'category_id'}"/>
<filter string="Creation Date" name="groupby_create_date" context="{'group_by': 'create_date:week'}"/>

Ghi chú

Kết quả của read_groups được nhóm trên một trường có thể bị ảnh hưởng bởi thuộc tính group_expand của nó, cho phép hiển thị các nhóm trống khi cần. Để biết thêm thông tin, vui lòng tham khảo Field.

yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

{}

Cảnh báo

Các chuỗi bộ lọc (không có phần tử không phải bộ lọc ngăn cách chúng) được coi là được kết hợp toàn diện: chúng sẽ được tạo bằng OR thay vì AND thông thường.

Example

<filter domain="[('state', '=', 'draft')]"/>
<filter domain="[('state', '=', 'done')]"/>

Các bản ghi có trường trạng tháibản nháp hoặc hoàn thành được hiển thị.

Example

<filter domain="[('state', '=', 'draft')]"/>
<separator/>
<filter domain="[('delay', '&lt;', 15)]"/>

Các bản ghi có trường state là trường draft delay nhỏ hơn 15.

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/search_filter.svg
<search>
    <filter string="My Custom Name" domain="[('name', 'ilike', 'AAA')]"/>
    <filter string="My orders" domain="[('user_id', '=', uid)]"/>
    <filter string="Category" context="{'group_by': 'category_id'}"/>
</search>

dấu phân cách: các nhóm bộ lọc riêng biệt

Phần tử separator được sử dụng để phân tách các nhóm filters trong các chế độ xem tìm kiếm đơn giản. Đối với các chế độ xem tìm kiếm phức tạp hơn, nên sử dụng phần tử group.

<search>
    <FILTERS/>
    <separator/>
    <FILTERS/>
</search>

Phần tử dấu phân cách không có thuộc tính.

group: các nhóm bộ lọc riêng biệt

Phần tử group được sử dụng để phân tách các nhóm filters trong chế độ xem tìm kiếm lộn xộn. Trong các chế độ xem tìm kiếm đơn giản hơn, nó có thể được thay thế cho phần tử separator.

<search>
    <group expand="0" string="LABEL">
        <FILTERS/>
    </group>
</search>

Phần tử group không có thuộc tính.

searchpanel: hiển thị bảng tìm kiếm

Phần tử searchpanel hiển thị bảng tìm kiếm ở bên trái của chế độ xem nhiều bản ghi. Nó cho phép lọc dữ liệu nhanh chóng trên cơ sở các trường nhất định.

<search>
    <searchpanel>
        <FIELDS/>
    </searchpanel>
</search>

Phần tử searchpanel chỉ chấp nhận các phần tử con field.

Phần tử field được sử dụng làm phần tử con của phần tử searchpanel có thể có các thuộc tính sau:

name

Tên của trường để lọc.

yêu cầu

Bắt buộc

kiểu

str

string

Nhãn của trường.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

Thuộc tính string của trường của mô hình

select

Hành vi và hiển thị của trường. Nó có thể có hai giá trị khác nhau:

one

Có thể chọn tối đa một giá trị. Các loại trường được hỗ trợ là many2oneselection.

multi

Một số giá trị có thể được chọn. Các loại trường được hỗ trợ là many2one, many2manyselection.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

một

groups

Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử ! phủ định để loại trừ chúng.

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

icon

Biểu tượng của trường.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

color

Màu sắc của cánh đồng.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

Khi phần tử field có bộ thuộc tính select=one, nó có thể có các thuộc tính bổ sung sau:

hierarchize

Liệu các danh mục con sẽ xuất hiện trong danh mục chính của chúng hay ở cùng cấp độ phân cấp.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

phạm vi

Many2one các trường

Khi phần tử field có bộ thuộc tính select=multi, nó có thể có các thuộc tính bổ sung sau:

enable_counters

Liệu bộ đếm bản ghi có được tính toán và hiển thị nếu khác 0 hay không.

Mẹo

Thuộc tính này tồn tại để tránh ảnh hưởng đến hiệu suất. Một cách khác để giải quyết các vấn đề về hiệu suất là ghi đè các phương thức search_panel_select_rangesearch_panel_select_multi_range.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

expand

Liệu các danh mục và bộ lọc không có bản ghi có được hiển thị hay không.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

limit

Số giá trị tối đa cần tìm nạp cho trường. Nếu đạt đến giới hạn, không có giá trị nào được hiển thị trên bảng tìm kiếm và thay vào đó, thông báo lỗi sẽ hiển thị. Nếu được đặt thành 0, tất cả giá trị sẽ được tìm nạp.

yêu cầu

Không bắt buộc

kiểu

int

mặc định

200

domain

Các điều kiện mà hồ sơ phải đáp ứng.

Example

<searchpanel>
    <field name="department_id"/>
    <field name="manager_id" select="multi" domain="[('department_id', '=', department_id)]"/>
</searchpanel>
yêu cầu

Không bắt buộc

kiểu

Biểu thức Python

mặc định

[]

groupby

Tên của tên trường mà các giá trị sẽ được nhóm lại.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

phạm vi

Many2oneMany2many các trường

Tìm kiếm mặc định

Các trường tìm kiếm và bộ lọc có thể được định cấu hình thông qua ngữ cảnh của hành động bằng cách sử dụng các phím search_default_name. Đối với các trường, giá trị phải là giá trị được đặt cho trường. Đối với bộ lọc, nó phải là giá trị boolean hoặc số.

Example

Với foo, một trường và bar, một bộ lọc, ngữ cảnh hành động sau sẽ tìm kiếm foo trên acro và bật bar theo mặc định:

{
    'search_default_foo': 'acro',
    'search_default_bar': 1
}

Một giá trị số (từ 1 đến 99) có thể được sử dụng để xác định thứ tự của các bộ lọc groupby mặc định.

Example

Với foobar, hai bộ lọc groupby, ngữ cảnh hành động sau đây trước tiên sẽ bật bar, sau đó là foo.

{
    'search_default_foo': 2,
    'search_default_bar': 1
}

Kanban

Chế độ xem Kanban được sử dụng dưới dạng bảng Kanban trực quan hóa: chúng hiển thị các bản ghi dưới dạng "thẻ", nằm giữa một list chế độ xem và chế độ xem form không thể chỉnh sửa.

Các bản ghi có thể được nhóm thành các cột để sử dụng trong trực quan hóa hoặc thao tác quy trình công việc (ví dụ: nhiệm vụ hoặc quản lý tiến độ công việc) hoặc được tách nhóm (chỉ được sử dụng để trực quan hóa các bản ghi).

Phần tử gốc của chế độ xem Kanban là kanban.

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/kanban.svg
<kanban>
    ...
</kanban>

Ghi chú

Chế độ xem Kanban tải và hiển thị tối đa mười cột. Bất kỳ cột nào sau đó sẽ bị đóng nhưng người dùng vẫn có thể mở được.

Thuộc tính gốc

Các thuộc tính tùy chọn có thể được thêm vào phần tử gốc kanban để tùy chỉnh chế độ xem.

string

Tiêu đề của chế độ xem. Nó chỉ được hiển thị nếu bạn mở một hành động không có tên và có mục tiêu là mới (mở hộp thoại).

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

create

Tắt/bật tính năng tạo bản ghi trên dạng xem.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

edit

Tắt/bật phiên bản bản ghi trên chế độ xem.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

delete

Tắt/bật tính năng xóa bản ghi trên chế độ xem thông qua danh sách thả xuống Action.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

default_group_by

Tên của trường mà các bản ghi sẽ được nhóm theo mặc định nếu không có nhóm nào được chỉ định thông qua hành động hoặc search hiện tại.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

default_order

Danh sách các tên trường được phân tách bằng dấu phẩy sẽ ghi đè thứ tự được xác định trên mô hình thông qua thuộc tính _order.

Để đảo ngược thứ tự sắp xếp của một trường, hãy đặt hậu tố cho trường đó bằng desc, cách nhau bằng dấu cách.

Example

<tree default_order="sequence,name desc">
    ...
</tree>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

class

Thêm các lớp HTML vào phần tử HTML gốc của dạng xem.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

examples

Khóa trong KanbanExamplesRegistry của các ví dụ có thể được duyệt khi tạo một cột mới trong chế độ xem kanban được nhóm.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

group_create

Thanh Thêm cột mới có hiển thị hay không.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

group_delete

Liệu các cột có thể bị xóa thông qua menu răng cưa hay không.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

group_edit

Liệu các cột có thể được chỉnh sửa thông qua menu răng cưa hay không.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

groups_draggable

Liệu các cột có thể được sắp xếp lại hay không.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

records_draggable

Liệu các bản ghi có thể được kéo khi chế độ xem Kanban được nhóm lại hay không.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

archivable

Liệu các bản ghi thuộc một cột có thể được lưu trữ và hủy lưu trữ hay không khi trường active được xác định trên mô hình.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng

quick_create

Liệu có thể tạo bản ghi mà không cần chuyển sang dạng xem biểu mẫu hay không.

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Đúng khi chế độ xem kanban được nhóm theo nhiều trường 2one, vùng chọn, char hoặc boolean, nếu không thì False

quick_create_view

Tham chiếu của chế độ xem form sẽ mở khi sử dụng tính năng tạo nhanh các bản ghi.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

on_create

Hành động tùy chỉnh sẽ gọi khi nhấp vào Tạo.

Nếu được đặt thành 'quick_create', tính năng tạo nhanh bản ghi sẽ được sử dụng thay thế. Nếu tính năng tạo nhanh bị tắt, hành động tạo tiêu chuẩn sẽ được gọi.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

sample

Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.

Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường display_name trên mô hình res.users sẽ được điền tên người mẫu, trong khi trường email sẽ có dạng firstname.lastname@sample.demo.

Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

banner_route

Lộ trình tìm nạp HTML từ đó và thêm nó vào chế độ xem.

Nếu thuộc tính này được đặt, URL của controller Route sẽ được tìm nạp và nội dung trả về sẽ được hiển thị phía trên chế độ xem. Phản hồi JSON từ bộ điều khiển phải chứa khóa html.

Nếu HTML chứa thẻ <link> cho biểu định kiểu, thẻ này sẽ bị xóa khỏi vị trí ban đầu và được thêm vào phần <head>.

Để tương tác với phần phụ trợ, hãy sử dụng thẻ <a type="action">. Để biết thêm chi tiết, hãy tham khảo tài liệu về phương thức _onActionClicked trong AbstractController.

Chỉ các chế độ xem mở rộng AbstractViewAbstractController, chẳng hạn như Hình thức, Kanban, và Danh sách, mới có thể sử dụng cái này thuộc tính.

Example

<tree banner_route="/module_name/hello" />
class MyController(odoo.http.Controller):
    @http.route('/module_name/hello', auth='user', type='json')
    def hello(self):
        return {
            'html': """
                <div>
                    <link href="/module_name/static/src/css/banner.css"
                        rel="stylesheet">
                    <h1>hello, world</h1>
                </div> """
        }
yêu cầu

Không bắt buộc

kiểu

con đường

mặc định

''

Các thành phần

Chế độ xem Kanban chấp nhận các phần tử con sau: field, header, progressbar, và templates.

Phần giữ chỗ được viết hoa tất cả.

field: hiển thị giá trị trường

Phần tử field khai báo các trường sẽ sử dụng trong templates. Nếu trường hiển thị đơn giản thì không cần khai báo trước.

<kanban>
    <field name="FIELD_NAME"/>
    ...
</kanban>

Phần tử field có thể có các thuộc tính sau:

name

Tên của trường cần hiển thị.

yêu cầu

Bắt buộc

kiểu

str

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/kanban_field.svg
<kanban>
    <templates>
        <t t-name="kanban-box">
            <div>
                <field name="name"/>
            </div>
        </t>
    </templates>
</kanban>

header: hiển thị các nút trong bảng điều khiển

Phần tử header được sử dụng để chèn các nút tùy chỉnh vào bảng điều khiển.

<kanban>
    <header>
        <BUTTONS/>
    </header>
    ...
</kanban>

Phần tử header chỉ chấp nhận các phần tử con button, tương tự như các phần tử listviews' Button.

Phần tử button được sử dụng làm phần tử con của phần tử header có thể có các thuộc tính bổ sung sau:

display

Chế độ hiển thị của nút. Nó có thể có hai giá trị khác nhau:

display

Nút này chỉ được hiển thị khi một số bản ghi được chọn; hành động của họ áp dụng cho các bản ghi đã chọn.

always

Nút này luôn được hiển thị ngay cả khi không có bản ghi nào được chọn.

Quan trọng

Chỉ có chế độ hiển thị luôn luôn khả dụng vì chưa thể chọn bản ghi trong chế độ xem Kanban.

Example

<header>
    <button name="toDoAlways" type="object" string="Always displayed" display="always"/>
    <button name="toDoSelection" type="object" string="Displayed if selection"/>
</header>
yêu cầu

Không bắt buộc

kiểu

str

mặc định

hiển thị

progressbar: hiển thị thanh tiến trình trên đầu cột

Phần tử progressbar được sử dụng để xác định thanh tiến trình hiển thị trên đầu các cột kanban.

<kanban>
    <progressbar field="FIELD_NAME"/>
    ...
</kanban>

Phần tử progressbar có thể có các thuộc tính sau:

field

Tên của trường làm cơ sở cho các nhóm con của thanh tiến trình.

yêu cầu

Bắt buộc

kiểu

str

colors

Ánh xạ các giá trị trường của thanh tiến trình tới các giá trị màu tắt tiếng, thành công, cảnh báonguy hiểm.

yêu cầu

Bắt buộc

kiểu

JSON

sum_field

Tên của trường sẽ sử dụng tính tổng được hiển thị bên cạnh thanh tiến trình. Nếu không được đặt, tổng số bản ghi sẽ được hiển thị thay thế.

yêu cầu

Không bắt buộc

kiểu

str

mặc định

''

Cấu trúc có thể có và cách thể hiện kết xuất của nó

../../../_images/kanban_progressbar.svg
<kanban>
    <progressbar field="activity_state"
                 colors="{'planned': 'success', 'today': 'warning', 'overdue': 'danger'}"
                 sum_field="expected_revenue"/>
    <templates>
        ...
    </templates>
</kanban>

templates: xác định cấu trúc thẻ

Các phần tử templates được sử dụng để xác định QWeb templates cấu trúc các thẻ kanban.

Định nghĩa cấu trúc thẻ có thể được chia thành nhiều mẫu để rõ ràng, nhưng phải xác định ít nhất một mẫu gốc kanban-box.

Hai mẫu bổ sung có thể được xác định: kanban-menukanban-tooltip. Nếu được xác định, mẫu kanban-menu sẽ được hiển thị bên trong danh sách thả xuống có thể được chuyển đổi bằng dấu chấm lửng dọc () ở phía trên bên phải của thẻ. Mẫu kanban-tooltip được hiển thị bên trong chú giải công cụ khi di chuột qua thẻ kanban.

Các mẫu được viết bằng JavaScript QWeb

<kanban>
    ...
    <templates>
        <t t-name="kanban-box">
            <div>
                <field name="name"/>
            </div>
        </t>
    </templates>
</kanban>

Các biến sau có sẵn trong ngữ cảnh kết xuất:

widget

KanbanRecord() hiện tại. Nó có thể được sử dụng để lấy một số thông tin meta. Các phương thức này cũng có sẵn trực tiếp trong ngữ cảnh mẫu và không cần truy cập thông qua widget.

kiểu

str

record

Một đối tượng có tất cả các trường được yêu cầu làm thuộc tính. Mỗi trường có hai thuộc tính: valueraw_value. Cái trước được định dạng theo tham số người dùng hiện tại trong khi cái sau là giá trị thô từ read() (ngoại trừ các trường datedatetime được định dạng theo ngôn ngữ người dùng).

kiểu

str

context

Ngữ cảnh hiện tại được truyền từ hành động mở chế độ xem kanban hoặc trường one2many hoặc many2many nhúng chế độ xem kanban trong chế độ xem biểu mẫu.

kiểu

str

read_only_mode
kiểu

str

selection_mode

Chế độ xem Kanban có được mở khi chọn trường many2one hay many2many trong môi trường di động hay không.

kiểu

bool

Mặc dù hầu hết các mẫu kanban đều là Mẫu QWeb tiêu chuẩn, nhưng chế độ xem kanban xử lý các phần tử field, buttona là một cách đặc biệt:

  • Theo mặc định, các trường được thay thế bằng giá trị được định dạng của chúng, trừ khi thuộc tính widget được chỉ định, trong trường hợp đó việc hiển thị và hành vi của chúng phụ thuộc vào tiện ích tương ứng. Thuộc tính widget có thể có các giá trị khác nhau bao gồm:

    handle

    Cho phép sắp xếp lại các bản ghi bằng cách kéo và thả khi chúng được sắp xếp dựa trên các trường trình tự (hoặc số nguyên).

  • Các nút và liên kết có thuộc tính type thực hiện các hoạt động khác với chức năng HTML tiêu chuẩn của chúng. Thuộc tính type có thể có các giá trị actionobject của các nút thông thường hoặc các giá trị sau:

    open

    Nhấp vào phần tử sẽ mở bản ghi của thẻ ở chế độ xem biểu mẫu ở chế độ chỉ đọc.

    edit

    Nhấp vào phần tử sẽ mở bản ghi của thẻ ở chế độ xem biểu mẫu ở chế độ có thể chỉnh sửa.

    delete

    Nhấp vào phần tử sẽ xóa bản ghi của thẻ và xóa thẻ.

QWeb

Chế độ xem QWeb là các mẫu Mẫu QWeb tiêu chuẩn bên trong arch của chế độ xem. Chúng không có phần tử gốc cụ thể. Vì chế độ xem QWeb không có phần tử gốc cụ thể nên loại của chúng phải được chỉ định rõ ràng (không thể suy ra từ phần tử gốc của trường arch).

Chế độ xem QWeb có hai trường hợp sử dụng:

  • chúng có thể được sử dụng làm mẫu giao diện người dùng, trong trường hợp đó `` mẫu`` nên được sử dụng làm lối tắt.

  • chúng có thể được sử dụng làm chế độ xem qweb thực tế (được mở bên trong một hành động), trong trường hợp đó, chúng phải được xác định là chế độ xem thông thường với loại rõ ràng (không thể suy ra) và một mô hình.

Các bổ sung chính của qweb-as-view cho qweb-as-template cơ bản là:

  • qweb-as-view có trường hợp đặc biệt cho phần tử <nav> mang lớp CSS o_qweb_cp_buttons: nội dung của nó phải là các nút và sẽ được trích xuất và chuyển đến khu vực nút của bảng điều khiển, `` Bản thân <nav>`` sẽ bị xóa, đây là cách giải quyết để kiểm soát chế độ xem bảng điều khiển chưa tồn tại

  • Kết xuất qweb-as-view thêm một số mục vào bối cảnh kết xuất qweb tiêu chuẩn:

    người mẫu

    mô hình mà chế độ xem qweb bị ràng buộc

    tên miền

    miền được cung cấp bởi chế độ xem tìm kiếm

    `` bối cảnh``

    bối cảnh được cung cấp bởi chế độ xem tìm kiếm

    kỷ lục

    một proxy lười biếng cho model.search(domain), điều này có thể được sử dụng nếu bạn chỉ muốn lặp lại các bản ghi và không thực hiện các thao tác phức tạp hơn (ví dụ: nhóm)

  • qweb-as-view cũng cung cấp các hook kết xuất bổ sung:

    • _qweb_prepare_context(view_id, domain) chuẩn bị bối cảnh hiển thị cụ thể cho qweb-as-view

    • qweb_render_view(view_id, domain) là phương thức được máy khách gọi và sẽ gọi các phương thức chuẩn bị ngữ cảnh và cuối cùng là env['ir.qweb'].render().

đồ thị

Chế độ xem biểu đồ được sử dụng để trực quan hóa các tập hợp trên một số bản ghi hoặc nhóm bản ghi. Phần tử gốc của nó là <graph> có thể nhận các thuộc tính sau:

loại (tùy chọn)

một trong bar (mặc định), pieline, loại biểu đồ sẽ sử dụng

`` xếp chồng`` (tùy chọn)

chỉ được sử dụng cho biểu đồ `` thanh``. Đặt thành 0 để ban đầu ngăn các thanh trong một nhóm được xếp chồng lên nhau.

hiệu hóa_liên kết (tùy chọn)

được đặt thành 1 để ngăn chuyển hướng các nhấp chuột trên biểu đồ sang chế độ xem danh sách

đặt hàng (tùy chọn)

nếu được đặt, các giá trị trục x sẽ được sắp xếp theo mặc định theo số đo của chúng theo thứ tự đã cho (asc hoặc desc). Chỉ được sử dụng cho biểu đồ bar và ''pie``.

chuỗi (tùy chọn)

chuỗi được hiển thị trong đường dẫn khi chuyển hướng đến chế độ xem danh sách.

sample

Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.

Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường display_name trên mô hình res.users sẽ được điền tên người mẫu, trong khi trường email sẽ có dạng firstname.lastname@sample.demo.

Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

Phần tử duy nhất được phép trong chế độ xem biểu đồ là field có thể có các thuộc tính sau:

tên (bắt buộc)

tên của trường sẽ sử dụng trong dạng xem. Nếu được sử dụng để nhóm (thay vì tổng hợp)

hình (tùy chọn)

nếu đúng, trường sẽ không xuất hiện trong các thước đo đang hoạt động cũng như trong các thước đo có thể chọn.

loại (tùy chọn)

nếu được đặt thành đo, trường sẽ được sử dụng làm giá trị tổng hợp trong một nhóm thay vì tiêu chí nhóm. Nó chỉ hoạt động cho trường cuối cùng có thuộc tính đó nhưng nó hữu ích cho các trường khác có thuộc tính chuỗi (xem bên dưới).

khoảng (tùy chọn)

trên các trường ngày và giờ, nhóm theo khoảng thời gian đã chỉ định (ngày, tuần, tháng, quý hoặc năm) thay vì nhóm theo ngày giờ cụ thể ( độ phân giải thứ hai cố định) hoặc ngày (độ phân giải ngày cố định). Mặc định là tháng.

chuỗi (tùy chọn)

chỉ được sử dụng cho trường có type="measure". Tên sẽ được sử dụng để hiển thị trường trong chế độ xem biểu đồ, ghi đè thuộc tính Chuỗi python mặc định của trường.

Các thước đo được tạo tự động từ các trường mô hình; chỉ các trường tổng hợp được sử dụng. Các thước đo đó cũng được sắp xếp theo thứ tự bảng chữ cái trên chuỗi của trường.

Cảnh báo

việc tổng hợp chế độ xem biểu đồ được thực hiện trên nội dung cơ sở dữ liệu, không thể sử dụng các trường chức năng không được lưu trữ trong chế độ xem biểu đồ

Trục

Chế độ xem trục được sử dụng để trực quan hóa các tập hợp dưới dạng bảng tổng hợp. Phần tử gốc của nó là <pivot> có thể nhận các thuộc tính sau:

hiệu hóa_liên kết (tùy chọn)

Đặt thành 1 để xóa liên kết của ô bảng tới chế độ xem danh sách.

display_quantity (tùy chọn)

Đặt thành 1 để hiển thị cột Số lượng theo mặc định.

default_order (tùy chọn)

Tên của thước đo và thứ tự (asc hoặc desc) sẽ sử dụng làm thứ tự mặc định trong dạng xem.

<pivot default_order="foo asc">
   <field name="foo" type="measure"/>
</pivot>

Phần tử duy nhất được phép trong chế độ xem trục là field có thể có các thuộc tính sau:

tên (bắt buộc)

tên của trường sẽ sử dụng trong dạng xem. Nếu được sử dụng để nhóm (thay vì tổng hợp)

chuỗi (tùy chọn)

tên sẽ được sử dụng để hiển thị trường trong chế độ xem trục, ghi đè thuộc tính Chuỗi python mặc định của trường.

loại (tùy chọn)

cho biết liệu trường này nên được sử dụng làm tiêu chí nhóm hay làm giá trị tổng hợp trong một nhóm. Các giá trị có thể là:

hàng (mặc định)

nhóm theo trường được chỉ định, mỗi nhóm sẽ có hàng riêng.

col

tạo các nhóm theo cột

đo lường

trường để tổng hợp trong một nhóm

`` khoảng``

trên các trường ngày và giờ, nhóm theo khoảng thời gian đã chỉ định (ngày, tuần, tháng, quý hoặc năm) thay vì nhóm theo ngày giờ cụ thể ( độ phân giải thứ hai cố định) hoặc ngày (độ phân giải ngày cố định).

hình (tùy chọn)

nếu đúng thì trường này sẽ không xuất hiện trong các thước đo đang hoạt động cũng như trong các thước đo có thể chọn (hữu ích cho các trường không được tổng hợp có ý nghĩa, chẳng hạn như các trường ở các đơn vị khác nhau, ví dụ: € và $).

sample

Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.

Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường display_name trên mô hình res.users sẽ được điền tên người mẫu, trong khi trường email sẽ có dạng firstname.lastname@sample.demo.

Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

Các thước đo được tạo tự động từ các trường mô hình; chỉ các trường tổng hợp được sử dụng. Các thước đo đó cũng được sắp xếp theo thứ tự bảng chữ cái trên chuỗi của trường.

Cảnh báo

Giống như chế độ xem biểu đồ, trục tổng hợp dữ liệu về nội dung cơ sở dữ liệu, điều đó có nghĩa là không thể sử dụng các trường chức năng không được lưu trữ trong chế độ xem trục

Trong chế độ xem Pivot, field có thể có thuộc tính widget để xác định định dạng của nó. Tiện ích phải là một trình định dạng trường, trong đó thú vị nhất là ngày, datetime, float_timetiền tệ.

Ví dụ: chế độ xem trục của bảng chấm công có thể được xác định là:

<pivot string="Timesheet">
    <field name="employee_id" type="row"/>
    <field name="date" interval="month" type="col"/>
    <field name="unit_amount" type="measure" widget="float_time"/>
</pivot>

Lịch

Chế độ xem lịch hiển thị các bản ghi dưới dạng sự kiện theo lịch hàng ngày, hàng tuần, hàng tháng hoặc hàng năm.

Ghi chú

Theo mặc định, chế độ xem lịch sẽ tập trung vào ngày hiện tại (hôm nay). Bạn có thể chuyển một ngày bắt đầu cụ thể vào ngữ cảnh của hành động để đặt tiêu điểm ban đầu của lịch theo khoảng thời gian (xem chế độ) xung quanh ngày này (khóa ngữ cảnh để sử dụng là initial_date)

Phần tử gốc của chúng là <calendar>. Các thuộc tính có sẵn trên chế độ xem lịch là:

sợi dây

chuỗi (mặc định: '')

Tiêu đề dạng xem này chỉ được hiển thị nếu bạn mở một hành động không có tên và mục tiêu của nó là 'mới' (mở hộp thoại)

tạo nên

bool (mặc định: True)

Tắt/bật tính năng tạo bản ghi trên dạng xem.

biên tập

bool (mặc định: True)

Tắt/bật phiên bản bản ghi trên chế độ xem.

xóa bỏ

bool (mặc định: True)

Tắt/bật tính năng xóa bản ghi trên chế độ xem thông qua menu thả xuống Hành động.

ngày_bắt đầu (bắt buộc)

tên trường của bản ghi chứa ngày bắt đầu sự kiện

ngày_dừng

tên trường của bản ghi chứa ngày kết thúc của sự kiện, nếu date_stop được cung cấp, các bản ghi sẽ có thể di chuyển được (thông qua kéo và thả) trực tiếp trong lịch

`` ngày_delay``

thay thế cho date_stop, cung cấp thời lượng của sự kiện thay vì ngày kết thúc (đơn vị: ngày)

màu sắc

tên của trường bản ghi sẽ sử dụng cho phân đoạn màu. Các bản ghi trong cùng phân đoạn màu được phân bổ cùng màu nổi bật trong lịch, các màu được phân bổ bán ngẫu nhiên. Đã hiển thị display_name/avatar của bản ghi hiển thị trong thanh bên

form_view_id

view để mở khi người dùng tạo hoặc chỉnh sửa một sự kiện. Lưu ý rằng nếu thuộc tính này không được đặt, chế độ xem lịch sẽ quay trở lại id của chế độ xem biểu mẫu trong hành động hiện tại, nếu có.

sự kiện_open_popup

Nếu tùy chọn 'event_open_popup' được đặt thành true thì chế độ xem lịch sẽ mở các sự kiện (hoặc bản ghi) trong FormViewDialog. Nếu không, nó sẽ mở các sự kiện ở chế độ xem biểu mẫu mới (với do_action)

tạo_nhanh

cho phép tạo sự kiện nhanh khi nhấp chuột: chỉ yêu cầu người dùng nhập tên (trường mà giá trị này được lưu vào có thể được kiểm soát thông qua rec_name) và cố gắng tạo một sự kiện mới chỉ với điều đó và thời gian sự kiện được nhấp vào. Quay lại hộp thoại biểu mẫu đầy đủ nếu quá trình tạo nhanh không thành công

quick_create_view_id

Xem để mở khi thuộc tính quick_create được đặt và người dùng tạo một sự kiện thay vì hộp thoại mặc định.

tạo_name_field

tên trường của bản ghi chứa phần trình bày văn bản của bản ghi, tên này được sử dụng khi tạo bản ghi thông qua cơ chế 'tạo nhanh'

cả ngày

Tên của trường boolean trên bản ghi cho biết liệu sự kiện tương ứng có được gắn cờ là kéo dài cả ngày hay không (và thời lượng không liên quan)

chế độ

Chế độ hiển thị mặc định khi tải lịch. Các thuộc tính có thể có là: ngày, tuần, tháng, năm

`` cân``

Danh sách thang đo được phân tách bằng dấu phẩy để cung cấp. Theo mặc định, tất cả các thang đo đều có sẵn. Xem chế độ để biết các giá trị tỷ lệ có thể có.

tạo, xóa

cho phép vô hiệu hóa hành động tương ứng trong chế độ xem bằng cách đặt thuộc tính tương ứng thành false

<trường>

khai báo các trường để tổng hợp hoặc sử dụng trong kanban logic. Nếu trường này chỉ được hiển thị trong thẻ lịch.

Các trường có thể có các thuộc tính bổ sung:

hình

sử dụng "True" để ẩn giá trị trong thẻ

trường_avatar

chỉ dành cho trường x2many, để hiển thị hình đại diện thay vì display_name trong thẻ

write_modelwrite_fieldfilter_field

bạn có thể thêm bộ lọc và lưu kết quả vào mô hình đã xác định, bộ lọc sẽ được thêm vào thanh bên. filter_field là tùy chọn và cho phép bạn chỉ định trường sẽ giữ trạng thái của bộ lọc.

bộ lọc và ''màu``

sử dụng "True" để thêm trường này vào bộ lọc ở thanh bên. Bạn có thể chỉ định trường color được sử dụng để tô màu cho hộp kiểm.

mô hình chung

Hoạt động

Chế độ xem Hoạt động được sử dụng để hiển thị các hoạt động được liên kết với bản ghi. Dữ liệu được hiển thị dưới dạng biểu đồ với các bản ghi tạo thành hàng và hoạt động tạo thành cột. Ô đầu tiên của mỗi hàng hiển thị một thẻ (có thể tùy chỉnh, xem templates, khá giống với Kanban) đại diện cho bản ghi tương ứng. Khi nhấp vào các ô khác, mô tả chi tiết về tất cả các hoạt động cùng loại cho bản ghi sẽ được hiển thị.

Cảnh báo

Chế độ xem Hoạt động chỉ khả dụng khi mô-đun mail được cài đặt và đối với các mô hình kế thừa từ mail.activity.mixin.

Phần tử gốc của chế độ xem Hoạt động là <activity>, nó chấp nhận các thuộc tính sau:

chuỗi (bắt buộc)

Tiêu đề nên mô tả quan điểm

Các phần tử con có thể có của phần tử khung nhìn là:

`` lĩnh vực``

khai báo các trường sẽ sử dụng trong hoạt động logic. Nếu trường được hiển thị đơn giản trong chế độ xem hoạt động thì không cần phải khai báo trước.

Các thuộc tính có thể có là:

tên (bắt buộc)

tên của trường để tìm nạp

`` mẫu``

định nghĩa các mẫu Mẫu QWeb. Định nghĩa thẻ có thể được chia thành nhiều mẫu để rõ ràng, nhưng chế độ xem hoạt động phải xác định ít nhất một mẫu gốc hộp hoạt động, mẫu này sẽ được hiển thị một lần cho mỗi bản ghi.

Chế độ xem hoạt động sử dụng hầu hết các tiêu chuẩn javascript qweb và cung cấp các biến ngữ cảnh sau (xem Kanban để biết thêm chi tiết):

tiện ích

ActivityRecord() hiện tại, có thể được sử dụng để tìm nạp một số thông tin meta. Các phương thức này cũng có sẵn trực tiếp trong ngữ cảnh mẫu và không cần truy cập thông qua widget

kỷ lục

một đối tượng có tất cả các trường được yêu cầu làm thuộc tính của nó. Mỗi trường có hai thuộc tính valueraw_value

Đội quân

Enterprise feature

Chế độ xem nhóm được sử dụng để hiển thị và hiểu cách một số dữ liệu thay đổi trong một khoảng thời gian. Ví dụ: hãy tưởng tượng rằng đối với một doanh nghiệp nhất định, khách hàng có thể đăng ký một số dịch vụ. Sau đó, chế độ xem nhóm có thể hiển thị tổng số lượng đăng ký mỗi tháng và nghiên cứu tốc độ khách hàng rời khỏi dịch vụ (rời bỏ). Khi nhấp vào một ô, chế độ xem nhóm sẽ chuyển hướng bạn đến một hành động mới trong đó bạn sẽ chỉ nhìn thấy các bản ghi có trong khoảng thời gian của ô; hành động này chứa chế độ xem danh sách và chế độ xem biểu mẫu.

Ghi chú

Theo mặc định, chế độ xem nhóm sẽ sử dụng cùng chế độ xem danh sách và biểu mẫu như chế độ xem được xác định trên hành động. Bạn có thể chuyển chế độ xem danh sách và chế độ xem biểu mẫu sang ngữ cảnh của hành động để đặt/ghi đè các chế độ xem sẽ được sử dụng (các phím ngữ cảnh sẽ sử dụng là form_view_idlist_view_id)

Ví dụ: đây là chế độ xem nhóm rất đơn giản:

<cohort string="Subscription" date_start="date_start" date_stop="date" interval="month"/>

Phần tử gốc của chế độ xem Nhóm là <cohort>, nó chấp nhận các thuộc tính sau:

chuỗi (bắt buộc)

Tiêu đề nên mô tả quan điểm

ngày_bắt đầu (bắt buộc)

Trường ngày hoặc giờ hợp lệ. Trường này được hiểu theo quan điểm là ngày bắt đầu của bản ghi

ngày_stop (bắt buộc)

Trường ngày hoặc giờ hợp lệ. Trường này được hiểu theo dạng xem là ngày kết thúc của bản ghi. Đây là lĩnh vực sẽ quyết định tỷ lệ rời bỏ.

hiệu hóa_liên kết (tùy chọn)

Đặt thành 1 để ngăn chuyển hướng các nhấp chuột vào các ô nhóm thuần tập sang chế độ xem danh sách.

chế độ (tùy chọn)

Một chuỗi để mô tả chế độ. Nó phải là 'churn' hoặc 'retention' (mặc định). Chế độ rời bỏ sẽ bắt đầu ở mức 0% và tích lũy theo thời gian trong khi tỷ lệ giữ chân sẽ bắt đầu ở mức 100% và giảm dần theo thời gian.

dòng thời gian (tùy chọn)

Một chuỗi để mô tả dòng thời gian. Nó phải là 'lùi' hoặc 'tiến' (mặc định). Dòng thời gian xuôi sẽ hiển thị dữ liệu từ date_start đến date_stop, trong khi dòng thời gian lùi sẽ hiển thị dữ liệu từ date_stop đến date_start (khi date_start ở trong tương lai/lớn hơn date_stop).

khoảng (tùy chọn)

Một chuỗi để mô tả một khoảng thời gian. Nó phải là 'ngày', 'tuần', 'tháng'' (mặc định) hoặc 'năm'.

đo (tùy chọn)

Một trường có thể được tổng hợp. Trường này sẽ được sử dụng để tính toán các giá trị cho mỗi ô. Nếu không được đặt, chế độ xem nhóm sẽ đếm số lần xuất hiện.

<field> (tùy chọn)

cho phép chỉ định một trường cụ thể để quản lý trường đó từ các biện pháp có sẵn, mục đích chính của nó là để ẩn một trường khỏi các biện pháp có thể chọn:

tên (bắt buộc)

tên của trường sẽ sử dụng trong dạng xem.

chuỗi (tùy chọn)

tên sẽ được sử dụng để hiển thị trường trong chế độ xem nhóm, sẽ ghi đè thuộc tính Chuỗi python mặc định của trường.

hình (tùy chọn)

nếu đúng thì trường này sẽ không xuất hiện trong các thước đo đang hoạt động cũng như trong các thước đo có thể chọn (hữu ích cho các trường không được tổng hợp có ý nghĩa, chẳng hạn như các trường ở các đơn vị khác nhau, ví dụ: € và $). Nếu giá trị là một miền, miền đó sẽ được đánh giá trong ngữ cảnh bản ghi của hàng hiện tại, nếu True thì thuộc tính tương ứng được đặt trên ô.

odoo.addons.base.models.ir_ui_view.sample

Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.

Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường display_name trên mô hình res.users sẽ được điền tên người mẫu, trong khi trường email sẽ có dạng firstname.lastname@sample.demo.

Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

Lưới

Enterprise feature

Hạn chế

Chế độ xem này là một công việc đang được tiến hành và có thể phải được mở rộng hoặc thay đổi.

  • chỉ các trường cột `` date`` đã được thử nghiệm, selectionmany2one được triển khai và hỗ trợ trên danh nghĩa nhưng chưa được thử nghiệm, datetime hoàn toàn không được triển khai.

  • các ô cột khó có thể cấu hình được và phải là số

  • điều chỉnh ô bị tắt theo mặc định và phải được định cấu hình để bật

  • Siêu dữ liệu ACL tạo, chỉnh sửaxóa ACL không được tự động đặt trên chế độ xem gốc do các hạn chế trong quá trình xử lý hậu kỳ fields_view_get (có một danh sách rõ ràng cố định về chế độ xem các loại nhận các thuộc tính đó)

Lược đồ

Chế độ xem lưới có lược đồ riêng và xác thực bổ sung trong mô-đun này. Kiến trúc khung nhìn là:

<lưới> (1)

phần tử gốc kiến trúc

  • thuộc tính chuỗi bắt buộc

  • Các thuộc tính tạo, chỉnh sửaxóa tùy chọn

  • thuộc tính `` adjustment`` và `` adjustment_name`` tùy chọn

    điều chỉnh có thể là `` đối tượng`` hoặc `` hành động`` để cho biết liệu việc điều chỉnh của một ô có nên được thực hiện thông qua lệnh gọi phương thức hay thực thi hành động hay không. `` adjustment_name`` cung cấp tên phương thức và id hành động tương ứng.

    Trong cả hai trường hợp, các tham số điều chỉnh được cung cấp dưới dạng thành viên ngữ cảnh grid_just, trong trường hợp object, các tham số cũng được cung cấp dưới dạng tham số hàm vị trí (bên cạnh danh sách id trống):

    tên miền hàng

    miền khớp với toàn bộ hàng của ô đã điều chỉnh

    `` trường_cột``

    tên của cột cho ô được điều chỉnh

    giá trị cột

    giá trị của cột cho ô được điều chỉnh

    `` trường_ô``

    trường đo của ô được điều chỉnh

    thay đổi

    sự khác biệt giữa giá trị cũ của ô và giá trị được điều chỉnh, có thể dương hoặc âm

  • thuộc tính hide_line_totalhide_column_total tùy chọn

    hide_line_total

    được đặt thành true để ẩn toàn bộ dòng (mặc định là sai)

    hide_column_total

    đặt thành true để ẩn cột tổng (mặc định là sai)

  • thuộc tính barchart_total tùy chọn

    biểu đồ thanh_tổng

    được đặt thành true để hiển thị biểu đồ thanh ở cuối lưới, dựa trên tổng số cột (mặc định là sai).

  • thuộc tính create_inlinedisplay_empty tùy chọn

    tạo_inline

    được đặt thành true để hiển thị một hàng bổ sung ở cuối lưới bằng nút Thêm một dòng (mặc định là sai). Khi tùy chọn này được đặt thành true, nút Thêm dòng từ bảng điều khiển sẽ bị ẩn. Khi không có dữ liệu và khi display_empty không được đặt (vì vậy khi nội dung trợ giúp được hiển thị), nút Thêm dòng từ bảng điều khiển sẽ được hiển thị để cho phép người dùng tạo đầu tiên ghi.

    display_empty

    được đặt thành true để tiếp tục hiển thị lưới khi không có dữ liệu (mặc định là sai). Điều này có thể hữu ích khi bạn muốn người dùng có thể theo dõi giai đoạn hiện tại (vì ngày tháng được hiển thị trong tiêu đề cột). Xin nhắc lại, khi không có dữ liệu và khi thuộc tính này không được đặt, nội dung trợ giúp sẽ được hiển thị thay vì dạng lưới.

<nút> (0+)

Các nút hành động thông thường của SoOn, được hiển thị trong tiêu đề chế độ xem

  • thuộc tính chuỗi bắt buộc (nhãn nút)

  • thuộc tính type bắt buộc, object hoặc action

    Ghi chú

    các nút quy trình công việc không được hỗ trợ

  • Thuộc tính name bắt buộc, tên của phương thức cần gọi hoặc ID của hành động cần thực thi

  • tùy chọn ngữ cảnh

Lệnh gọi lại máy chủ được cung cấp tất cả id bản ghi được hiển thị trong dạng xem, dưới dạng id được truyền cho phương thức (nút đối tượng) hoặc dưới dạng active_ids (nút action của ngữ cảnh)

<field type="row"> (1+)

Các trường nhóm hàng sẽ được thay thế bằng bộ lọc nhóm của chế độ xem tìm kiếm nếu có.

Thứ tự của các trường hàng trong chế độ xem cung cấp độ sâu nhóm của chúng: nếu trường đầu tiên là school và trường thứ hai là age thì các bản ghi sẽ được nhóm theo school trước và theo tuổi trong mỗi trường.

<field type="col"> (1)

Trường nhóm cột.

Trường col có thể chứa 0+ phần tử <range> chỉ định phạm vi cột có thể tùy chỉnh. Phần tử range có các thuộc tính bắt buộc sau

tên

có thể được sử dụng để ghi đè phạm vi mặc định (mặc định là phạm vi đầu tiên) thông qua giá trị ngữ cảnh grid_range

chuỗi

nhãn của nút phạm vi (người dùng có thể nhìn thấy)

`` khoảng``

tên tượng trưng của khoảng tất cả các cột sẽ hiển thị cùng một lúc trong chế độ xem, có thể kích hoạt phân trang.

Đối với các trường ngày, khoảng thời gian hợp lệ hiện là `` tuần`` và `` tháng``.

bước

tên tượng trưng của bước giữa một cột và cột trước/tiếp theo

Đối với các trường ngày, khoảng thời gian hợp lệ duy nhất hiện tại là ngày.

<field type="đo"> (1)

Trường ô, được tích lũy tự động (bởi read_group).

Trường đo có thể lấy thuộc tính widget để tùy chỉnh cách hiển thị của nó.

Tương tác máy chủ

Ngoài các nút tùy chọn, chế độ xem lưới hiện gọi hai phương thức:

  • read_grid (được mô-đun cung cấp trên tất cả các mô hình) trả về gần như toàn bộ nội dung của lưới dưới dạng lệnh:

    • tiêu đề hàng là danh sách các từ điển có các phím sau:

      giá trị (bắt buộc)

      cái này ánh xạ tới một từ điển có khóa trên mỗi trường `` hàng``, các giá trị luôn có dạng [giá trị, nhãn].

      tên miền (bắt buộc)

      miền của bất kỳ bản ghi nào tại nguồn của hàng này, trong trường hợp cần sao chép bản ghi trong quá trình điều chỉnh ô

    • tiêu đề cột là danh sách các từ điển có ít nhất một khóa:

      giá trị (bắt buộc)

      xem giá trị tiêu đề hàng

      tên miền (bắt buộc)

      xem giá trị tên miền cột

      hiện tại (tùy chọn)

      boolean, đánh dấu/đánh dấu một cột

    • dữ liệu lưới dưới dạng danh sách (các hàng) danh sách (của các ô) của các ô sẽ chỉ ra mỗi ô bằng các phím sau:

      giá trị

      giá trị số được liên kết với ô

      tên miền

      miền khớp với bản ghi của ô (nên được coi là mờ)

      `` kích thước``

      số lượng bản ghi được nhóm trong ô

      chỉ đọc (tùy chọn)

      một boolean chỉ ra rằng ô cụ thể này không thể chỉnh sửa được ở máy khách

      các lớp (tùy chọn)

      danh sách các lớp (dưới dạng chuỗi) để thêm vào vùng chứa của ô (giữa TD của ô và phần tử có khả năng chỉnh sửa của ô).

      Trong trường hợp có xung đột giữa danh sách này và các lớp cơ sở (có tiền tố o_grid_cell_), các lớp trong danh sách này sẽ bị bỏ qua.

      Lưu ý rằng dữ liệu lưới dày đặc, nếu truy vấn cơ sở dữ liệu không mang lại nhóm nào khớp với ô thì ô sẽ tạo ra một ô "trống" với các giá trị mặc định cho các khóa bắt buộc.

    • prevnext có thể là giả (không phân trang) hoặc một mục ngữ cảnh để hợp nhất vào ngữ cảnh của chế độ xem thành read_grid trang trước hoặc trang tiếp theo, nó phải được coi là mờ

  • read_grid_domain(field, range) (được mô-đun cung cấp trên tất cả các mô hình) trả về miền khớp với "span" được định cấu hình hiện tại của lưới. Việc này cũng được read_grid thực hiện nội bộ, nhưng có thể hữu ích hoặc cần thiết để gọi độc lập để sử dụng với các ví dụ riêng biệt. search_count hoặc read_group.

  • just_grid, hiện chưa có triển khai chung và ngữ nghĩa của nó có thể thay đổi theo thời gian và trường hợp sử dụng

Móc máy chủ

read_grid gọi một số hook cho phép tùy chỉnh hoạt động của nó từ bên trong mà không cần phải ghi đè toàn bộ phương thức:

_grid_format_cell(nhóm, trường ô)

chuyển đổi đầu ra của read_group (theo nhóm) thành các ô theo định dạng được mô tả ở trên (như một phần của "dữ liệu lưới")

_grid_make_empty_cell(row_domain, cột_domain, view_domain)

tạo một phiên bản trống của một ô (nếu không có nhóm tương ứng)

_grid_column_info(tên, phạm vi)

tạo một đối tượng ColumnMetadata dựa trên loại cột, lưu trữ các giá trị được trả về trực tiếp (như một phần của read_grid) hoặc truy vấn đã sử dụng và định dạng lại read_group thành read_grid:

`` phân nhóm``

trường/truy vấn nhóm thực tế cho các cột

tên miền

tên miền áp dụng cho read_group trong trường hợp trường cột được phân trang, có thể là danh sách trống

`` trước`` và `` tiếp theo``

các phân đoạn ngữ cảnh sẽ được gửi đến read_grid cho các trang trước và sau trang hiện tại. Nếu False, vô hiệu hóa phân trang theo hướng đó

giá trị

giá trị cột để hiển thị trên "trang hiện tại", mỗi giá trị là một từ điển có các khóa sau:

giá trị

từ điển ánh xạ tên trường thành giá trị cho toàn bộ cột, thường chỉ tên -> một giá trị

tên miền

tên miền phù hợp với cột cụ thể này

là_hiện hành

Đúng nếu cột hiện tại phải được phác thảo cụ thể trong lưới, Sai nếu không

`` định dạng``

cách định dạng các giá trị của cột/loại đó từ định dạng read_group sang định dạng read_grid (khớp với values trong ColumnInfo)

ACL

  • nếu chế độ xem không thể chỉnh sửa được thì các ô riêng lẻ sẽ không thể chỉnh sửa được

  • nếu chế độ xem không thể tạo được, nút Thêm dòng sẽ không được hiển thị (hiện tại nó tạo một bản ghi trống mới)

Phím ngữ cảnh

`` phạm vi lưới``

chọn phạm vi nào sẽ được sử dụng theo mặc định nếu chế độ xem có nhiều phạm vi

lưới_anchor

nếu có thể, được sử dụng làm neo mặc định của phạm vi cột thay vì bất cứ thứ gì read_grid xác định làm mặc định.

Đối với các trường ngày, ngày tham chiếu mà khoảng thời gian ban đầu sẽ được tính toán. Cố định ngày mặc định là "hôm nay" (theo múi giờ của người dùng)

Gantt

Enterprise feature

Chế độ xem Gantt hiển thị biểu đồ Gantt một cách thích hợp (để lập lịch).

Phần tử gốc của khung nhìn gantt là <gantt/>, nó không có phần tử con nhưng có thể có các thuộc tính sau:

sợi dây

chuỗi (mặc định: '')

Tiêu đề dạng xem này chỉ được hiển thị nếu bạn mở một hành động không có tên và mục tiêu của nó là 'mới' (mở hộp thoại)

tạo nên

bool (mặc định: True)

Tắt/bật tính năng tạo bản ghi trên dạng xem.

biên tập

bool (mặc định: True)

Tắt/bật phiên bản bản ghi trên chế độ xem.

xóa bỏ

bool (mặc định: True)

Tắt/bật tính năng xóa bản ghi trên chế độ xem thông qua menu thả xuống Hành động.

ngày_bắt đầu (bắt buộc)

tên của trường cung cấp ngày giờ bắt đầu của sự kiện cho mỗi bản ghi.

ngày_stop (bắt buộc)

tên của trường cung cấp thời lượng kết thúc của sự kiện cho mỗi bản ghi.

trường phụ thuộc

tên của trường many2many cung cấp mối quan hệ phụ thuộc giữa hai bản ghi. Nếu B phụ thuộc vào A thì dependency_field là trường cho phép lấy A từ B. Cả trường này và trường dependency_inverted_field đều được sử dụng để vẽ các mũi tên phụ thuộc giữa các viên thuốc và sắp xếp lại chúng.

dependency_inverted_field (bắt buộc nếu dependency_field được cung cấp)

tên của trường many2many cung cấp mối quan hệ phụ thuộc đảo ngược so với dependency_field. Nếu B phụ thuộc vào A thì dependency_inverted_field là trường cho phép lấy B từ A.

màu sắc

tên của trường được sử dụng để tô màu các viên thuốc theo giá trị của nó

trang trí-{$name}

biểu thức python đánh giá thành bool

cho phép thay đổi kiểu văn bản của ô dựa trên thuộc tính của bản ghi tương ứng.

{$name} có thể là một trong màu theo ngữ cảnh của bootstrap`_ (``nguy hiểm, thông tin, thứ cấp, thành công hoặc cảnh báo ).

Xác định hiển thị có điều kiện của bản ghi theo kiểu văn bản của hàng dựa trên thuộc tính của bản ghi tương ứng.

Giá trị là biểu thức Python. Đối với mỗi bản ghi, biểu thức được đánh giá bằng các thuộc tính của bản ghi dưới dạng giá trị ngữ cảnh và nếu true, kiểu tương ứng sẽ được áp dụng cho hàng. Dưới đây là một số giá trị khác có sẵn trong ngữ cảnh:

  • uid: id của người dùng hiện tại,

  • hôm nay: ngày địa phương hiện tại dưới dạng chuỗi có dạng YYYY-MM-DD,

  • bây giờ: giống như hôm nay nhưng có thêm thời gian hiện tại. Giá trị này được định dạng là YYYY-MM-DD hh:mm:ss.

<gantt decoration-info="state == 'draft'"
      decoration-danger="state == 'help_needed'"
      decoration-bf="state == 'busy'">
  ...
</gantt>
default_group_by

tên của một trường để nhóm các nhiệm vụ theo

hiệu hóa_drag_drop

nếu được đặt thành true, chế độ xem gantt sẽ không có bất kỳ hỗ trợ kéo và thả nào

hợp nhất

tên trường để hiển thị giá trị hợp nhất trong ô bản ghi

hợp nhất_max

từ điển với trường "nhóm theo" làm khóa và giá trị hợp nhất tối đa có thể đạt được trước khi hiển thị ô màu đỏ (ví dụ: {"user_id": 100})

hợp nhất_loại trừ

Tên của trường mô tả liệu nhiệm vụ có phải được loại trừ khỏi việc hợp nhất hay không nếu được đặt thành true, nó sẽ hiển thị một vùng sọc trong dòng hợp nhất

tạo, cell_create, chỉnh sửa, xóa, kế hoạch

cho phép dishủy bỏ hành động tương ứng trong chế độ xem bằng cách đặt thuộc tính tương ứng thành false (mặc định: true).

  • tạo: Nếu được bật, nút Thêm sẽ có sẵn trong bảng điều khiển để tạo bản ghi.

  • cell_create: Nếu được bật và tạo được bật, nút "++" sẽ được hiển thị khi di chuột trên ô khe thời gian để tạo bản ghi mới trên khe đó.

  • chỉnh sửa: Nếu được bật, các bản ghi đã mở sẽ ở chế độ chỉnh sửa (do đó có thể chỉnh sửa được).

  • kế hoạch: Nếu được bật và chỉnh sửa được bật, nút "kính lúp" sẽ được hiển thị trên các khe thời gian để sắp xếp các bản ghi chưa được chỉ định vào khe thời gian đó.

Example

Khi bạn không muốn tạo bản ghi trên khung nhìn gantt và ngày bắt đầu và ngày kết thúc được yêu cầu trên mô hình, tính năng lập kế hoạch sẽ bị tắt vì sẽ không tìm thấy bản ghi nào.

`` bù đắp``

Tùy theo quy mô, số lượng đơn vị cần thêm vào ngày hôm nay để tính thời hạn mặc định. Ví dụ: Giá trị chênh lệch +1 trong tuần default_scale sẽ mở chế độ xem gantt cho tuần tiếp theo và giá trị chênh lệch -2 trong tháng default_scale sẽ mở chế độ xem gantt của 2 tháng trước.

tiến bộ

tên của trường cung cấp tỷ lệ phần trăm hoàn thành cho sự kiện của bản ghi, từ 0 đến 100

chuỗi

tiêu đề của chế độ xem gantt

`` độ chính xác``

Đối tượng JSON chỉ định độ chính xác chụp nhanh cho các viên thuốc trong mỗi thang đo.

Các giá trị có thể có cho thang đo `` ngày`` là (mặc định: `` giờ``):

  • `` giờ``: ghi lại thời gian nhanh đến mức đầy đủ (ví dụ: 7:12 trở thành 8:00)

  • hour:half: ghi lại thời gian chuyển thành nửa giờ (ví dụ: 7:12 trở thành 7:30)

  • giờ:quý: ghi lại thời gian chuyển thành nửa giờ (ví dụ: 7:12 trở thành 7:15)

Các giá trị có thể có cho thang đo `` tuần`` là (mặc định: day:half):

  • ngày: ghi lại thời gian chuyển thành cả ngày (ví dụ: 7:28 sáng trở thành 11:59:59 tối của ngày hôm trước, 10:32 tối trở thành 12:00 trưa của ngày hiện tại)

  • day:half: ghi lại thời gian chuyển thành nửa giờ (ví dụ: 7:28 sáng trở thành 12:00 trưa)

Các giá trị có thể có cho tỷ lệ `` tháng`` là (mặc định: day:half):

  • ngày: ghi lại thời gian chuyển thành cả ngày (ví dụ: 7:28 sáng trở thành 11:59:59 tối của ngày hôm trước, 10:32 tối trở thành 12:00 trưa của ngày hiện tại)

  • day:half: ghi lại thời gian chuyển thành nửa giờ (ví dụ: 7:28 sáng trở thành 12:00 trưa)

Thang đo năm luôn chụp nhanh cả ngày.

Ví dụ về thuộc tính chính xác: {"day": "hour:quarter", "week": "day:half", "month": "day"}

tổng_hàng

boolean để kiểm soát xem hàng chứa tổng số bản ghi có được hiển thị hay không. (mặc định: false)

thu gọn_first_level

boolean để kiểm soát xem có thể thu gọn từng hàng nếu được nhóm theo một trường hay không. (mặc định: false, quá trình thu gọn bắt đầu khi nhóm theo hai trường)

hiển thị_không sẵn

boolean để đánh dấu ngày tháng được hàm gantt_unavailability của mô hình trả về là có sẵn trong khung nhìn gantt. Các bản ghi vẫn có thể được lên lịch trong đó nhưng tính khả dụng của chúng sẽ được hiển thị một cách trực quan. (mặc định: false)

tỷ lệ mặc định

tỷ lệ mặc định khi hiển thị chế độ xem. Các giá trị có thể có là (mặc định: tháng):

  • ngày

  • `` tuần``

  • tháng

  • năm

`` cân``

danh sách các tỷ lệ được phép được phân tách bằng dấu phẩy cho chế độ xem này. Theo mặc định, tất cả các thang đo đều được phép. Để biết các giá trị tỷ lệ có thể sử dụng trong danh sách này, hãy xem default_scale.

`` mẫu``

định nghĩa mẫu Mẫu QWeb gantt-popover được sử dụng khi người dùng di chuột qua một trong các bản ghi trong chế độ xem gantt.

Chế độ xem gantt sử dụng hầu hết các tiêu chuẩn javascript qweb và cung cấp các biến ngữ cảnh sau:

tiện ích

GanttRow() hiện tại, có thể được sử dụng để tìm nạp một số thông tin meta. Phương thức getColor để chuyển đổi thành số nguyên màu cũng có sẵn trực tiếp trong ngữ cảnh mẫu mà không cần sử dụng widget.

on_create

Nếu được chỉ định khi nhấp vào nút thêm trên chế độ xem, thay vì mở hộp thoại chung, hãy khởi chạy một hành động máy khách. cái này sẽ chứa xmlid của hành động (ví dụ: on_create="%(my_module.my_wizard)d"

form_view_id

dạng xem để mở khi người dùng tạo hoặc chỉnh sửa bản ghi. Lưu ý rằng nếu thuộc tính này không được đặt, chế độ xem gantt sẽ quay trở lại id của chế độ xem biểu mẫu trong hành động hiện tại, nếu có.

dải_động

nếu được đặt thành true, chế độ xem gantt sẽ bắt đầu ở bản ghi đầu tiên, thay vì bắt đầu vào đầu năm/tháng/ngày.

thuốc_nhãn

Nếu được đặt thành true, thời gian sẽ xuất hiện trên nhãn thuốc khi thang đo được đặt theo tuần hoặc tháng. (ví dụ: 7:00 sáng - 11:00 sáng (4h) - Nhiệm vụ DST 1)

`` hình thu nhỏ ''

Điều này cho phép hiển thị hình thu nhỏ bên cạnh tên nhóm nếu nhóm là trường quan hệ. Điều này mong đợi một lệnh python khóa nào là tên của trường trên mô hình đang hoạt động. Giá trị là tên của trường chứa hình thu nhỏ trên mô hình liên quan.

Ví dụ: tác vụ có trường user_id tham chiếu res.users. Mô hình res.users có hình ảnh trường chứa hình đại diện, sau đó:

<gantt
   date_start="date_start"
   date_stop="date_stop"
   thumbnails="{'user_id': 'image_128'}"
 >
 </gantt>

sẽ hiển thị hình đại diện của người dùng bên cạnh tên của họ khi được nhóm theo user_id.

odoo.addons.base.models.ir_ui_view.sample

Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.

Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường display_name trên mô hình res.users sẽ được điền tên người mẫu, trong khi trường email sẽ có dạng firstname.lastname@sample.demo.

Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).

yêu cầu

Không bắt buộc

kiểu

bool

mặc định

Sai

Bản đồ

Enterprise feature

Chế độ xem này có thể hiển thị các bản ghi trên bản đồ và các tuyến đường giữa chúng. Các bản ghi được đại diện bởi các chân. Nó cũng cho phép hiển thị trực quan các trường từ mô hình trong cửa sổ bật lên được gắn với mã pin của bản ghi.

Ghi chú

Mô hình mà chế độ xem được áp dụng phải chứa res.partner many2one vì chế độ xem dựa vào địa chỉ và các trường tọa độ của res.partner để bản địa hóa các bản ghi.

API

Chế độ xem sử dụng API của nền tảng dữ liệu vị trí để tìm nạp các ô (nền của bản đồ), thực hiện chuyển tiếp địa lý (chuyển đổi địa chỉ thành một tập hợp tọa độ) và tìm nạp các tuyến đường. Chế độ xem triển khai hai API, OpenStreetMap và MapBox. OpenStreetMap được sử dụng theo mặc định và có thể tìm nạp ô và thực hiện chuyển tiếp địa lý. API này không yêu cầu mã thông báo. Ngay sau khi mã thông báo MapBox hợp lệ được cung cấp trong cài đặt chung, chế độ xem sẽ chuyển sang API MapBox. API này nhanh hơn và cho phép tính toán các tuyến đường. Bạn có thể nhận được mã thông báo bằng cách đăng ký vào MapBox.

Thành phần kết cấu

Phần tử gốc của khung nhìn là <map>. Nó có thể có các thuộc tính sau:

res_partner

Chứa res.partner many2one. Nếu không cung cấp chế độ xem khu nghỉ dưỡng để tạo một bản đồ trống.

mặc định_thứ tự

Nếu một trường được cung cấp, chế độ xem sẽ ghi đè thứ tự mặc định của mô hình. Trường phải là một phần của mô hình mà chế độ xem được áp dụng, không phải từ res.partner.

định tuyến

if 1 hiển thị các tuyến đường giữa các bản ghi. Chế độ xem cần có mã thông báo MapBox hợp lệ và ít nhất hai bản ghi được định vị (tức là các bản ghi có res.partner many2one và đối tác có địa chỉ hoặc tọa độ hợp lệ).

tên_ẩn

nếu 1 ẩn tên khỏi cửa sổ bật lên của mã pin (mặc định: 0).

ẩn_địa chỉ

nếu 1 ẩn địa chỉ khỏi cửa sổ bật lên của mã pin (mặc định: 0).

ẩn_tiêu đề

nếu 1 ẩn tiêu đề khỏi danh sách ghim (mặc định: 0).

panel_title

Chuỗi để hiển thị làm tiêu đề của danh sách pin. Nếu không được cung cấp, tiêu đề sẽ là tên của hành động hoặc "Mục" nếu chế độ xem không nằm trong một hành động.

giới hạn

Số lượng bản ghi tối đa cần tìm nạp (mặc định: 80). Nó phải là một số nguyên dương.

Phần tử <map> có thể chứa nhiều phần tử <field>. Mỗi phần tử <field> được hiểu là một dòng trong cửa sổ bật lên của ghim. Các thuộc tính của trường như sau:

tên

Trường để hiển thị.

chuỗi

Chuỗi để hiển thị trước nội dung của trường. Nó có thể được sử dụng như một mô tả.

Ví dụ đây là bản đồ:
<map res_partner="partner_id" default_order="date_begin" routing="1" hide_name="1">
    <field name="partner_id" string="Customer Name"/>
</map>