○ RAW SQL
通常我們想要在odoo中使用SQL語法時,都在model當中使用以定義方法的方式:
def raw_sql(self):
query = """
SELECT
id, name, author
FROM
my_library;
"""
self.env.cr.execute(query)
print('self.env.cr.fetchall:', self.env.cr.fetchall())
我們有三種取值的方式self.env.cr.fetchall()
self.env.cr.fetchone()
self.env.cr.dictfetchall()
當報表的格式比較特殊的時候,我們就會使用他:
@api.model_cr
def init(self):
tools.drop_view_if_exists(self.env.cr, self._table)
query = """
(
SELECT
min(library.id) as id,
create_uid,
avg(input_number) AS average_input_number
FROM
my_library AS demo
GROUP BY library.create_uid
);
"""
self.env.cr.execute(query)
※使用原生SQL時要特別注意,因為它是直接對DB做操作,並沒有ORM這層。
明天開始介紹 odoo 的 Security 。