Trường và Tiện ích

Trường cấu trúc các mô hình của cơ sở dữ liệu. Nếu hình dung một mô hình như một bảng hoặc bảng tính, thì các trường chính là những cột nơi dữ liệu được lưu trữ trong các bản ghi (tức là hàng). Trường cũng xác định loại dữ liệu được lưu trữ trong đó. Cách dữ liệu được trình bày và định dạng trên UI được xác định bởi tiện ích của chúng.

Về mặt kỹ thuật, có 15 kiểu trường trong Odoo. Tuy nhiên, bạn có thể chọn trong số 20 trường trong Studio, vì một số kiểu trường có sẵn hơn một lần với widget mặc định khác nhau.

Mẹo

New Fields chỉ có thể được thêm vào các chế độ xem Biểu mẫuDanh sách. Trên các chế độ xem khác, bạn chỉ có thể thêm Existing Fields (fields already on the model).

Trường đơn giản

Trường đơn giản chứa các giá trị cơ bản, như văn bản, số, tệp, v.v.

Ghi chú

Các widget không mặc định, khi có, sẽ được hiển thị dưới dạng dấu đầu dòng hoặc tiêu đề phụ bên dưới.

Văn bản (char)

Trường Text được dùng cho văn bản ngắn chứa bất kỳ ký tự nào. Một dòng văn bản sẽ được hiển thị khi điền vào trường.

  • Badge: hiển thị giá trị bên trong một hình dạng tròn, tương tự như một thẻ. Giá trị không thể chỉnh sửa trên giao diện người dùng, nhưng có thể đặt giá trị mặc định.

  • Sao chép vào Clipboard: users can copy the value by clicking a button.

  • E-mail: giá trị sẽ trở thành một liên kết mailto có thể nhấp.

  • Image: hiển thị một hình ảnh bằng URL. Giá trị không thể chỉnh sửa thủ công, nhưng có thể đặt giá trị mặc định.

    Ghi chú

    Cách này hoạt động khác so với việc chọn trực tiếp Image field, vì hình ảnh không được lưu trữ trong Odoo khi sử dụng trường Text kèm widget Image. Ví dụ, nó có thể hữu ích nếu bạn muốn tiết kiệm không gian đĩa.

  • Điện thoại: giá trị sẽ trở thành một liên kết tel có thể nhấp.

    Mẹo

    Đánh dấu Enable SMS để thêm tùy chọn gửi SMS trực tiếp từ Odoo bên cạnh trường.

  • URL: giá trị sẽ trở thành một URL có thể nhấp chuột.

Example

Các ví dụ về trường Văn bản với các tiện ích khác nhau

Văn bản đa dòng (text)

Trường Multiline Text được dùng cho văn bản dài hơn chứa bất kỳ loại ký tự nào. Hai dòng văn bản sẽ được hiển thị trên giao diện khi điền vào trường.

  • Sao chép vào Clipboard: users can copy the value by clicking a button.

Example

Ví dụ về các trường Văn bản Đa dòng với các tiện ích khác nhau

Số nguyên (integer)

Trường Integer được sử dụng cho tất cả các số nguyên (số dương, số âm hoặc số không, không có phần thập phân).

  • Biểu đồ tròn phần trăm: hiển thị giá trị bên trong vòng tròn phần trăm, thường dùng cho giá trị tính toán. Giá trị không thể chỉnh sửa trên giao diện, nhưng có thể đặt giá trị mặc định.

  • Thanh tiến độ: hiển thị giá trị kế bên thanh phần trăm, thường dùng cho giá trị tính toán. Trường không thể chỉnh sửa thủ công, nhưng có thể đặt giá trị mặc định.

  • Nút kéo: hiển thị biểu tượng kéo để sắp xếp bản ghi một cách thủ công trong List view.

Example

Ví dụ về các trường Integer với các widget khác nhau

Số thập phân (float)

Trường Decimal được sử dụng cho tất cả các số thập phân (dương, âm, hoặc không, có phần thập phân).

Ghi chú

Số thập phân được hiển thị với hai chữ số sau dấu thập phân trên giao diện người dùng, nhưng chúng được lưu trong cơ sở dữ liệu với độ chính xác cao hơn.

  • Tiền tệ: nó tương tự như sử dụng Trường tiền tệ. Nên sử dụng phần sau vì nó cung cấp nhiều tính năng hơn.

  • Phần trăm: hiển thị ký tự phần trăm % sau giá trị.

  • Biểu đồ tròn phần trăm: hiển thị giá trị bên trong vòng tròn phần trăm, thường dùng cho giá trị được tính toán. Trường này không thể được chỉnh sửa thủ công, nhưng có thể đặt giá trị mặc định.

  • Thanh tiến độ: hiển thị giá trị kế bên thanh phần trăm, thường dùng cho giá trị tính toán. Trường không thể chỉnh sửa thủ công, nhưng có thể đặt giá trị mặc định.

  • Thời gian: giá trị phải tuân theo định dạng hh:mm, với tối đa 59 phút.

Example

Các ví dụ về trường Decimal với các widget khác nhau

Tiền tệ (monetary)

Trường Monetary được sử dụng cho tất cả các giá trị tiền tệ.

Ghi chú

Khi bạn lần đầu tiên thêm trường Monetary, hệ thống sẽ nhắc bạn thêm trường Currency nếu mô hình chưa có. Odoo sẽ đề nghị thêm trường Currency cho bạn. Khi nó đã được thêm, hãy thêm lại trường Monetary.

Example

Ví dụ về trường tiền kèm theo trường tiền tệ

HTML (html)

Trường Html được sử dụng để thêm văn bản có thể chỉnh sửa bằng trình soạn thảo HTML của Odoo.

  • Multiline Text: vô hiệu hoá Odoo HTML editor để cho phép chỉnh sửa HTML thô.

Example

Ví dụ về các trường Html với các tiện ích khác nhau

Ngày (date)

Trường Date được dùng để chọn ngày trên lịch.

  • Ngày còn lại: số ngày còn lại trước ngày đã chọn được hiển thị (ví dụ, Trong 5 ngày), dựa trên ngày hiện tại. Trường này nên được đặt thành Chỉ đọc.

Example

Các ví dụ về trường Ngày với các widget khác nhau

Ngày & Giờ (datetime)

Trường Date & Time được dùng để chọn ngày trên lịch và thời gian trên đồng hồ. Thời gian hiện tại của người dùng sẽ được tự động sử dụng nếu không có thời gian nào được đặt.

Mẹo

Cũng như general properties, một số specific properties có sẵn cho các trường Date & Time có thiết lập widget Date & Time hoặc Date Range.

Khoảng thời gian (daterange)

Tiện ích Phạm vi ngày được sử dụng để hiển thị một khoảng thời gian xác định bởi ngày bắt đầu và ngày kết thúc trên một dòng duy nhất. Một phạm vi ngày có thể yêu cầu bắt buộc ngày bắt đầu và kết thúc, ví dụ: cho sự kiện kéo dài nhiều ngày, hoặc cho phép ngày bắt đầu/kết thúc tùy chọn chẳng hạn như cuộc xử lý dịch vụ hiện trường hoặc nhiệm vụ dự án.

Thêm một khoảng ngày yêu cầu hai trường: một trường Date & Time với tiện ích Date Range được bật và một trường khác được chọn làm ngày bắt đầu hoặc ngày kết thúc. Trường nền tảng này có thể là một trường Date hiện có hoặc trường Date & Time, hoặc một trường được tạo riêng cho mục đích này.

Để thêm một khoảng thời gian:

  1. Xác định một trường Date hoặc Date & Time hiện có có thể được sử dụng làm trường ngày bắt đầu/kết thúc cơ sở, hoặc thêm một trường mới. Nếu phạm vi ngày:

    • Có ngày bắt đầu và ngày kết thúc bắt buộc, trường này có thể là ngày bắt đầu hoặc ngày kết thúc; kết quả là như nhau.

    • cho phép ngày bắt đầu hoặc ngày kết thúc tùy chọn, trường này là ngày bắt đầu hoặc ngày kết thúc, tương ứng.

    Mẹo

    Để tránh hiển thị cùng một thông tin hai lần, trường ngày bắt đầu/kết thúc cơ bản có thể được ẩn bằng cách bật Invisible hoặc loại bỏ khỏi giao diện bằng cách nhấp vào Remove from view.

  2. Thêm một trường Ngày & Giờ và đặt trường Tiện ích thành Phạm vi ngày.

  3. Nhập một Label thích hợp

  4. Chọn trường ngày bắt đầu/kết thúc cơ sở từ danh sách thả xuống Start date field hoặc End date field, nếu phù hợp.

  5. Nếu khoảng thời gian ngày phải có ngày bắt đầu và ngày kết thúc bắt buộc, bật Always range.

  6. Cập nhật bất kỳ thuộc tính chung nào khác general properties hoặc các thuộc tính cụ thể cho trường Date & Time properties for Date & Time fields khi cần, sau đó nhấp vào Close ở góc trên bên phải của màn hình.

Example

Ví dụ về các trường Ngày & Giờ với các widget khác nhau

Số ngày còn lại (remaining_days)

Tiện ích Remaining Days hiển thị số ngày còn lại trước ngày đã chọn (ví dụ, In 5 days), dựa trên ngày và giờ hiện tại. Trường này nên được đặt thành Read only.

Hộp kiểm (boolean)

Trường Checkbox được sử dụng khi một giá trị chỉ có thể là đúng hoặc sai, được biểu thị bằng cách đánh dấu hoặc bỏ đánh dấu hộp kiểm.

  • Button: hiển thị một nút radio. Tiện ích hoạt động mà không cần chuyển sang chế độ chỉnh sửa.

  • Toggle: hiển thị một nút chuyển đổi. Tiện ích này hoạt động mà không cần chuyển sang chế độ chỉnh sửa.

Example

Ví dụ về các trường Checkbox với các widget khác nhau

Lựa chọn (selection)

Trường Selection được sử dụng khi người dùng cần chọn một giá trị duy nhất từ một nhóm các giá trị được định nghĩa trước.

  • Badge: hiển thị giá trị bên trong một hình dạng tròn, tương tự như một thẻ. Giá trị không thể chỉnh sửa trên giao diện người dùng, nhưng có thể đặt giá trị mặc định.

  • Badges: hiển thị tất cả các giá trị có thể chọn đồng thời trong các hình chữ nhật, sắp xếp theo chiều ngang.

  • Mức độ ưu tiên: hiển thị các biểu tượng sao thay vì giá trị, có thể được dùng để chỉ mức độ quan trọng hoặc mức độ hài lòng, ví dụ. Điều này có cùng hiệu quả như việc chọn trường Mức độ ưu tiên, mặc dù đối với trường sau, bốn giá trị mức độ ưu tiên đã được định sẵn.

  • Radio: hiển thị tất cả các giá trị có thể chọn cùng một lúc dưới dạng nút radio.

    Mẹo

    Mặc định, các nút radio được sắp xếp dọc. Bật Hiển thị theo chiều ngang để chuyển cách chúng được hiển thị.

  • Thanh trạng thái: hiển thị tất cả các giá trị có thể chọn đồng thời dưới dạng thanh tiến độ mũi tên.

    Mẹo

    Mặc định, các giá trị trên thanh trạng thái có thể được chọn. Tắt Clickable để ngăn giá trị bị chỉnh sửa trên UI.

Example

Các ví dụ về trường Selection với các widget khác nhau

Độ ưu tiên (selection)

Trường Mức độ ưu tiên sử dụng hệ thống đánh giá ba sao để thể hiện mức độ quan trọng hoặc mức độ hài lòng. Loại trường này là Trường lựa chọn với tiện ích Mức độ ưu tiên được chọn mặc định và bốn giá trị ưu tiên được xác định sẵn. Do đó, các tiện ích Huy hiệu, Các huy hiệu, Nút radioLựa chọn có tác dụng tương tự như mô tả trong phần Lựa chọn.

Mẹo

Để thay đổi số lượng sao có sẵn bằng cách thêm hoặc xóa các giá trị, hãy nhấp vào Edit Values. Lưu ý rằng giá trị đầu tiên bằng 0 sao (tức là khi không có lựa chọn nào), vì vậy có bốn giá trị sẽ tạo ra hệ thống đánh giá ba sao, ví dụ.

Example

Ví dụ trường Ưu tiên

Tệp (binary)

Trường File được dùng để tải lên bất kỳ loại tệp nào, hoặc ký một biểu mẫu (Sign widget).

  • Hình ảnh: người dùng có thể tải lên một tệp hình ảnh, sau đó sẽ được hiển thị trong Chế độ xem biểu mẫu. Điều này có cùng hiệu quả như khi sử dụng Trường Hình ảnh.

  • Trình xem PDF: người dùng có thể tải lên một tệp PDF, sau đó có thể duyệt từ Chế độ xem biểu mẫu.

  • : người dùng có thể ký điện tử vào biểu mẫu. Điều này có cùng hiệu quả như việc chọn trường trường Ký.

Example

Các ví dụ về trường File với các widget khác nhau

Hình ảnh (binary)

Trường Image được dùng để tải lên một hình ảnh và hiển thị nó trong Biểu mẫu. Loại trường này là một trường File với widget Image được chọn mặc định. Do đó, các widget File, PDF ViewerSign có cùng hiệu ứng như mô tả dưới File.

Mẹo

Để thay đổi kích thước hiển thị của hình ảnh đã tải lên, chọn Small, Medium hoặc Large trong tùy chọn Size.

Ký (binary)

Trường Sign được sử dụng để ký biểu mẫu điện tử. Kiểu trường này là File field với widget Sign được chọn mặc định. Do đó, các widget File, ImagePDF Viewer có cùng tác dụng như mô tả trong File.

Mẹo

Để cung cấp cho người dùng tùy chọn Auto khi phải vẽ chữ ký, hãy chọn một trong các trường Auto-complete with khả dụng (Text, Many2One, và Related Field chỉ trên mô hình). Chữ ký sẽ được tạo tự động bằng dữ liệu từ trường đã chọn.

Trường quan hệ

Các trường quan hệ được sử dụng để liên kết và hiển thị dữ liệu từ các bản ghi trên mô hình khác.

Ghi chú

Các tiện ích không mặc định, khi có, sẽ được hiển thị dưới dạng các dấu đầu dòng bên dưới.

Many2One (many2one)

Trường Many2One được dùng để liên kết một bản ghi khác (từ mô hình khác) tới bản ghi đang được chỉnh sửa. Tên của bản ghi từ mô hình khác sau đó sẽ được hiển thị trên bản ghi đang được chỉnh sửa.

Example

Trên mô hình Sales Order, trường Customer là trường Many2One trỏ tới mô hình Contact. Điều này cho phép nhiều đơn bán hàng được liên kết với một liên hệ (khách hàng).

Sơ đồ hiển thị quan hệ many2one

Mẹo

  • Để ngăn người dùng tạo một bản ghi mới trong mô hình liên kết, chọn Vô hiệu hoá tạo

  • Để ngăn người dùng mở bản ghi trong cửa sổ pop‑up, đánh dấu Disable opening

  • Để giúp người dùng chỉ chọn bản ghi đúng, bấm vào Domain để tạo bộ lọc.

  • Để chỉ kích hoạt tìm kiếm bản ghi được liên kết sau khi đã nhập tối thiểu một số ký tự, nhập số mong muốn vào trường Typeahead search. Trong các trường hợp dữ liệu lớn, điều này có thể cải thiện cả độ liên quan và hiệu năng của tìm kiếm.

  • Badge: hiển thị giá trị bên trong một hình dạng tròn, tương tự như thẻ. Giá trị không thể chỉnh sửa trên giao diện người dùng.

  • Radio: hiển thị tất cả các giá trị có thể chọn cùng một lúc dưới dạng nút radio.

One2Many (one2many)

Trường One2Many được dùng để hiển thị các quan hệ hiện có giữa một bản ghi trong mô hình hiện tại và nhiều bản ghi từ mô hình khác.

Example

Bạn có thể thêm một trường One2Many trên mô hình Contact để xem một khách hàng nhiều đơn bán hàng.

Sơ đồ hiển thị quan hệ one2many

Ghi chú

Để sử dụng trường One2Many, hai mô hình phải đã được liên kết trước bằng cách sử dụng một Many2One field. Các quan hệ One2Many không tồn tại độc lập: một tìm kiếm ngược các quan hệ Many2One hiện có được thực hiện.

Dòng (one2many)

Trường Lines được dùng để tạo một bảng với các hàng và cột (ví dụ, các dòng sản phẩm trên Đơn bán hàng).

Mẹo

Để sửa đổi các cột, nhấp vào trường Dòng và sau đó Chỉnh sửa chế độ xem danh sách. Để chỉnh sửa biểu mẫu xuất hiện khi người dùng nhấp vào Thêm một dòng, nhấp vào Chỉnh sửa chế độ xem biểu mẫu thay thế.

Example

Ví dụ của trường Dòng

Many2Many (many2many)

Trường Many2Many được sử dụng để liên kết nhiều bản ghi từ mô hình khác tới nhiều bản ghi trên mô hình hiện tại. Các trường Many2Many có thể sử dụng Vô hiệu hoá tạo mới, Vô hiệu hoá mở, Miền, giống như Many2One fields.

Example

Trong mô hình Task, trường Người được giao là trường Many2Many chỉ tới mô hình Contact. Điều này cho phép một người dùng duy nhất được giao cho nhiều công việc và nhiều người dùng được giao cho một công việc duy nhất.

Sơ đồ hiển thị các quan hệ many2many

Mẹo

Để chỉ kích hoạt tìm kiếm bản ghi liên kết sau khi đã nhập đủ số ký tự tối thiểu, hãy nhập số mong muốn vào trường Typeahead search. Trong các trường hợp dữ liệu lớn, điều này có thể cải thiện độ chính xác và hiệu suất của việc tìm kiếm.

  • Hộp kiểm: người dùng có thể chọn nhiều giá trị bằng cách sử dụng hộp kiểm.

  • Tags: người dùng có thể chọn nhiều giá trị hiển thị dưới dạng hình tròn, còn gọi là tags. Điều này có cùng hiệu lực như việc chọn trường Tags field.

Thẻ (many2many)

Trường Tags được dùng để hiển thị một số giá trị từ mô hình khác dưới dạng các hình tròn, còn gọi là thẻ. Kiểu trường này là một Many2Many field với widget Tags được chọn mặc định. Do đó, các widget CheckboxesMany2Many có cùng hiệu quả như được mô tả dưới Many2Many.

Mẹo

Để hiển thị thẻ với các màu nền khác nhau, đánh dấu vào Use colors.

Example

Ví dụ của trường Thẻ

Thuộc tính

Thuộc tính chung

  • Invisible: Kích hoạt thuộc tính này khi người dùng không cần xem trường trên UI. Điều này giúp làm gọn UI bằng cách chỉ hiển thị các trường thiết yếu tùy theo tình huống cụ thể.

    Thuộc tính Invisible cũng được áp dụng trong Studio. Để xem các trường ẩn trong Studio, nhấp vào tab View của một chế độ xem và bật Show Invisible Elements.

  • Bắt buộc: Kích hoạt thuộc tính này nếu một trường luôn phải được người dùng hoàn thành trước khi có thể tiếp tục.

  • Readonly: Kích hoạt thuộc tính này nếu người dùng không được phép sửa đổi trường.

Ghi chú

Bạn có thể chọn bật Invisible, RequiredReadonly chỉ cho các bản ghi cụ thể bằng cách nhấp vào Conditional và tạo bộ lọc.

Example

Trên chế độ xem Form của mô hình Contact, trường Title chỉ hiển thị khi Individual được chọn, vì trường này sẽ không hữu ích cho liên hệ Company.

  • Nhãn: tên trường trên giao diện người dùng. Đây không phải là tên được sử dụng trong cơ sở dữ liệu PostgreSQL. Để xem và thay đổi tên đó, kích hoạt developer mode và chỉnh sửa Tên kỹ thuật.

  • Tooltip trợ giúp: Để giải thích mục đích của một trường, hãy thêm mô tả. Văn bản sẽ được hiển thị trong hộp tooltip khi di chuột lên dấu hỏi bên cạnh nhãn của trường.

  • Tiện ích: Để thay đổi giao diện hoặc chức năng mặc định của một trường, chọn một trong các tiện ích có sẵn.

  • Trình giữ chỗ: Để cung cấp một ví dụ về cách một trường nên được hoàn thành, thêm văn bản giữ chỗ. Văn bản sẽ hiển thị màu xám nhạt cho đến khi giá trị được nhập.

  • Default value: Để hiển thị một giá trị mặc định trong trường khi tạo bản ghi, hãy thêm một giá trị.

  • Cho phép hiển thị cho các nhóm: Để giới hạn những người dùng có thể xem trường này, chọn một hoặc nhiều groups.

  • Forbid visibility to groups: Để ngăn một số người dùng xem trường này, chọn một hoặc nhiều nhóm quyền truy cập người dùng groups.

Thuộc tính cho các trường Ngày & Giờ

Đối với các trường Ngày & Giờ có widget Ngày & Giờ hoặc Khoảng ngày được thiết lập, một số thuộc tính cụ thể có sẵn:

  • Minimal precision: Xác định đơn vị thời gian nhỏ nhất phải được chọn trong bộ chọn ngày. Các giá trị có thể là Day, Month, Year hoặc Decade. Nếu không có giá trị nào được chọn, người dùng phải chọn một ngày trong bộ chọn ngày.

  • Độ chính xác tối đa: Xác định đơn vị ngày lớn nhất có thể được sử dụng để điều hướng bộ chọn ngày. Các giá trị có thể là Ngày, Tháng, Năm hoặc Thập kỷ. Nếu không có giá trị nào được chọn, người dùng có thể điều hướng bộ chọn ngày theo thập kỷ.

  • Cảnh báo cho ngày trong tương lai: Bật thuộc tính này để hiển thị biểu tượng cảnh báo nếu ngày được chọn là ngày trong tương lai.

  • Định dạng ngày: Mặc định, ngày sẽ được hiển thị dưới dạng Apr 2, 2025, 08:05 AM. Bật thuộc tính này để hiển thị ngày theo định dạng 4/2/2025 08:05:00. Chế độ số là định dạng được đặt theo ngôn ngữ hiện tại. Trong chế độ này, giây luôn được hiển thị.

  • Hiển thị ngày: Thuộc tính này được bật mặc định cho các trường Ngày & Giờ. Tắt thuộc tính này để chỉ hiển thị thời gian.

  • Hiển thị thời gian: Thuộc tính này được bật mặc định cho các trường Date & Time. Đối với trường chỉ đọc, tắt thuộc tính để chỉ hiển thị ngày. Điều này có thể giúp giao diện danh sách gọn gàng hơn, chẳng hạn.

  • Show seconds: Thuộc tính này mặc định bị vô hiệu hoá cho các trường Date & Time. Bật thuộc tính để hiển thị giây.

  • Time interval: Nhập một giá trị để xác định khoảng phút hiển thị trong bộ chọn thời gian. Ví dụ, nhập 15 để cho phép khoảng thời gian mỗi 15 phút (bốn phần một giờ). Giá trị mặc định được đặt là 5 phút.

  • Ngày chấp nhận sớm nhất: Nhập ngày sớm nhất có thể được chọn trong bộ chọn ngày theo định dạng ISO, tức là YYYY-MM-DD. Nếu ngày hiện tại luôn là ngày chấp nhận sớm nhất, nhập today. Trên bộ chọn ngày, các ngày trước ngày chấp nhận sớm nhất sẽ được làm mờ.

  • Ngày chấp nhận cuối cùng: Nhập ngày cuối cùng có thể được chọn trong bộ chọn ngày theo định dạng ISO, tức là YYYY-MM-DD. Nếu ngày hiện tại luôn là ngày chấp nhận cuối cùng, nhập today. Trong bộ chọn ngày, các ngày sau ngày chấp nhận cuối cùng sẽ được làm mờ.