Hồ sơ dữ liệu¶
SoOn chủ yếu dựa vào dữ liệu và phần lớn định nghĩa mô-đun là định nghĩa của các bản ghi khác nhau mà nó quản lý: Giao diện người dùng (menu và dạng xem), bảo mật (quyền truy cập và quy tắc bản ghi), báo cáo và dữ liệu đơn giản đều được xác định thông qua bản ghi .
Kết cấu¶
Cách chính để xác định dữ liệu trong SoOn là thông qua các tệp dữ liệu XML: Cấu trúc rộng của tệp dữ liệu XML như sau:
Bất kỳ số phần tử thao tác nào trong phần tử gốc
odoo
<?xml version="1.0" encoding="UTF-8"?>
<!-- the root elements of the data file -->
<odoo>
<operation/>
...
</odoo>
Các file dữ liệu được thực thi tuần tự, các thao tác chỉ có thể tham khảo kết quả của các thao tác được xác định trước đó
Ghi chú
Nếu nội dung của tệp dữ liệu dự kiến chỉ được áp dụng một lần, bạn có thể chỉ định cờ odoo noupdate
được đặt thành 1. Nếu một phần dữ liệu trong tệp dự kiến sẽ được áp dụng một lần, bạn có thể đặt phần này của tệp trong miền <data noupdate="1">.
<odoo>
<data noupdate="1">
<!-- Only loaded when installing the module (odoo-bin -i module) -->
<operation/>
</data>
<!-- (Re)Loaded at install and update (odoo-bin -i/-u) -->
<operation/>
</odoo>
Hoạt động cốt lõi¶
kỷ lục
¶
record
xác định hoặc cập nhật một bản ghi cơ sở dữ liệu một cách thích hợp, nó có các thuộc tính sau:
- ``mẫu``(bắt buộc)
tên của mô hình cần tạo (hoặc cập nhật)
id
mã định danh bên ngoài cho bản ghi này. Chúng tôi thực sự khuyên bạn nên cung cấp một
để tạo bản ghi, cho phép các định nghĩa tiếp theo sửa đổi hoặc tham chiếu đến bản ghi này
để sửa đổi bản ghi, bản ghi cần sửa đổi
- `` bối cảnh``
ngữ cảnh sử dụng khi tạo bản ghi
buộc tạo
trong chế độ cập nhật liệu bản ghi có được tạo hay không nếu nó không tồn tại
Yêu cầu external id, mặc định là
True
.
`` lĩnh vực``¶
Mỗi bản ghi có thể bao gồm các thẻ field
, xác định các giá trị cần đặt khi tạo bản ghi. Một `` bản ghi`` không có `` trường`` sẽ sử dụng tất cả các giá trị mặc định (tạo) hoặc không làm gì (cập nhật).
Một field
có thuộc tính name
bắt buộc, tên của trường cần đặt và các phương thức khác nhau để xác định chính giá trị đó:
- Không có gì
nếu không có giá trị nào được cung cấp cho trường, thì
False
ẩn sẽ được đặt trên trường. Có thể được sử dụng để xóa một trường hoặc tránh sử dụng giá trị mặc định cho trường đó.tìm kiếm
đối với các trường quan hệ, phải là domain trên mô hình của trường.
Sẽ đánh giá miền, tìm kiếm mô hình của trường bằng cách sử dụng nó và đặt kết quả tìm kiếm làm giá trị của trường. Sẽ chỉ sử dụng kết quả đầu tiên nếu trường là
Many2one
- `` giới thiệu``
nếu thuộc tính
ref
được cung cấp, giá trị của nó phải là external id hợp lệ, giá trị này sẽ được tra cứu và đặt làm giá trị của trường.Chủ yếu dành cho các trường
Many2one
vàReference
- `` gõ``
nếu thuộc tính
type
được cung cấp, nó sẽ được sử dụng để diễn giải và chuyển đổi nội dung của trường. Nội dung của trường có thể được cung cấp thông qua một tệp bên ngoài bằng cách sử dụng thuộc tínhfile
hoặc thông qua phần thân của nút.Các loại có sẵn là:
xml
,html
trích xuất các phần tử con của
field
dưới dạng một tài liệu duy nhất, đánh giá bất kỳ external id nào được chỉ định bằng biểu mẫu%(external_id)s
.%%
có thể được sử dụng để xuất ra các dấu hiệu % thực tế.tập tin
đảm bảo rằng nội dung trường là đường dẫn tệp hợp lệ trong mô hình hiện tại, lưu cặp
module,path
làm giá trị trườngchar
đặt nội dung trường trực tiếp làm giá trị của trường mà không thay đổi
cơ sở64
base64-mã hóa nội dung của trường, hữu ích khi kết hợp với
file
thuộc tính để tải, ví dụ: dữ liệu hình ảnh vào tệp đính kèmint
chuyển đổi nội dung của trường thành số nguyên và đặt nó làm giá trị của trường
thả nổi
chuyển đổi nội dung của trường thành float và đặt nó làm giá trị của trường
danh sách
,bộ
phải chứa bất kỳ số phần tử
value
nào có cùng thuộc tính vớifield
, mỗi phần tử phân giải thành một mục của bộ dữ liệu hoặc danh sách được tạo và bộ sưu tập được tạo được đặt làm giá trị của trường
- `` đánh giá``
đối với trường hợp các phương thức trước đó không phù hợp, thuộc tính
eval
chỉ đánh giá bất kỳ biểu thức Python nào được cung cấp và đặt kết quả làm giá trị của trường.Bối cảnh đánh giá chứa nhiều mô-đun khác nhau (
time
,datetime
,timedelta
,relativedelta
), một hàm để giải quyết định danh bên ngoài (ref
) và đối tượng mô hình cho trường hiện tại nếu có (obj
)
xóa
¶
Thẻ delete
có thể xóa bất kỳ số lượng bản ghi nào được xác định trước đó. Nó có các thuộc tính sau:
- ``mẫu``(bắt buộc)
mô hình trong đó một bản ghi được chỉ định sẽ bị xóa
id
external id của bản ghi cần xóa
tìm kiếm
a domain để tìm bản ghi của mô hình cần xóa
id
và search
là độc quyền
chức năng
¶
Thẻ function
gọi một phương thức trên mô hình, với các tham số được cung cấp. Nó có hai tham số bắt buộc model
và name
chỉ định tương ứng model và tên của phương thức cần gọi.
Các tham số có thể được cung cấp bằng cách sử dụng các phần tử eval
(nên đánh giá một chuỗi các tham số để gọi phương thức) hoặc các phần tử value
(xem các giá trị list
).
<odoo>
<data noupdate="1">
<record name="partner_1" model="res.partner">
<field name="name">Odude</field>
</record>
<function model="res.partner" name="send_inscription_notice"
eval="[[ref('partner_1'), ref('partner_2')]]"/>
<function model="res.users" name="send_vip_inscription_notice">
<function eval="[[('vip','=',True)]]" model="res.partner" name="search"/>
</function>
</data>
<record id="model_form_view" model="ir.ui.view">
...
</record>
</odoo>
Phím tắt¶
Do một số mô hình cấu trúc quan trọng của SoOn rất phức tạp và liên quan nên các tệp dữ liệu cung cấp các lựa chọn thay thế ngắn hơn để xác định chúng bằng cách sử dụng record tags:
`` mẫu``¶
Tạo một QWeb view chỉ yêu cầu phần arch
của view và cho phép một vài thuộc tính tùy chọn:
id
định danh bên ngoài của khung nhìn
tên
,inherit_id
,ưu tiên
giống như trường tương ứng trên
ir.ui.view
(nb:inherit_id
phải là externalidentifier)chính
nếu được đặt thành
True
và được kết hợp vớiinherit_id
, sẽ xác định chế độ xem là chế độ xem chínhnhóm
danh sách nhóm được phân tách bằng dấu phẩy số nhận dạng bên ngoài
trang
nếu được đặt thành
"Đúng"
, mẫu là một trang web (có thể liên kết tới, có thể xóa)tùy chọn
`` được bật`` hoặc `` bị vô hiệu hóa``, liệu chế độ xem có thể bị tắt (trong giao diện trang web) hay không và trạng thái mặc định của nó. Nếu không được đặt, chế độ xem luôn được bật.
Tệp dữ liệu CSV¶
Các tệp dữ liệu XML rất linh hoạt và tự mô tả, nhưng rất dài dòng khi tạo hàng loạt một số bản ghi đơn giản của cùng một mô hình.
Trong trường hợp này, các tệp dữ liệu cũng có thể sử dụng csv, điều này thường xảy ra với quyền truy cập:
tên tệp là
model_name.csv
hàng đầu tiên liệt kê các trường cần viết, với trường đặc biệt
id
dành cho các mã định danh bên ngoài (được sử dụng để tạo hoặc cập nhật)mỗi hàng sau đó tạo một bản ghi mới
Đây là những dòng đầu tiên của tệp dữ liệu xác định trạng thái quốc gia res.country.state.csv
"id","country_id:id","name","code"
state_au_1,au,"Australian Capital Territory","ACT"
state_au_2,au,"New South Wales","NSW"
state_au_3,au,"Northern Territory","NT"
state_au_4,au,"Queensland","QLD"
state_au_5,au,"South Australia","SA"
state_au_6,au,"Tasmania","TAS"
state_au_7,au,"Victoria","VIC"
state_au_8,au,"Western Australia","WA"
state_us_1,us,"Alabama","AL"
state_us_2,us,"Alaska","AK"
state_us_3,us,"Arizona","AZ"
state_us_4,us,"Arkansas","AR"
state_us_5,us,"California","CA"
state_us_6,us,"Colorado","CO"
được hiển thị ở định dạng dễ đọc hơn:
id |
country_id:id |
tên |
mã số |
---|---|---|---|
bang_au_1 |
au |
Lãnh thổ thủ đô Australia |
HÀNH ĐỘNG |
bang_au_2 |
au |
New South Wales |
NSW |
bang_au_3 |
au |
Lãnh thổ phía Bắc |
NT |
bang_au_4 |
au |
Queensland |
QLD |
bang_au_5 |
au |
Nam Úc |
SA |
bang_au_6 |
au |
Tasmania |
TAS |
bang_au_7 |
au |
Victoria |
VIC |
bang_au_8 |
au |
miền tây nước Úc |
WA |
tiểu bang_us_1 |
chúng ta |
Alabama |
AL |
bang_us_2 |
chúng ta |
Alaska |
AK |
bang_us_3 |
chúng ta |
Arizona |
AZ |
bang_us_4 |
chúng ta |
Arkansas |
AR |
tiểu bang_us_5 |
chúng ta |
California |
CA |
bang_us_6 |
chúng ta |
Colorado |
CO |
Đối với mỗi hàng (bản ghi):
cột đầu tiên là external id của bản ghi cần tạo hoặc cập nhật
cột thứ hai là external id của đối tượng quốc gia cần liên kết tới (đối tượng quốc gia phải được xác định trước)
cột thứ ba là trường
name
chores.country.state
cột thứ tư là trường
code
chores.country.state