Odoo-Building a Website隨記

本文主要是學習Odoo官方文檔 Building a Website文檔中的一些個人理解以及一些問題和解決辦法。用來頑固下學習,部分理解可能因為水平緣故會有點偏差,如果有錯誤,歡迎指出共同學習。

Creating a basic module

  • 任務(wù)通過建立模塊來執(zhí)行的
  • 通過新增或者修改現(xiàn)有的模塊可以定制odoo的特性。
    $ ./odoo-bin scaffold Academy my-modules

這個命令自動創(chuàng)建了一個my-modules的目錄(directory),里面包含著academy模塊(models)。

  • 目錄可以是已經(jīng)存在的,但是模塊名必須唯一。

A demonstration module

通過以下命令啟動odoo服務(wù)器
$ ./odoo-bin --addons-path addons,my-modules
這條命令會把 addons和my-modules加到path里面去。

To the browser

  • Controllers解析處理瀏覽器發(fā)來的請求(request),并返回響應(yīng)

Templates

  • Odoo允許使用任意python下的模板系統(tǒng),但是odoo自己附帶了一個模板系統(tǒng)QWeb.

  • 模板xml文件要在__manifest__.py文件里面注冊.

當模塊有更新時,需要重啟Odoo, 然后在網(wǎng)頁中通過點擊settings,然后在列表里面去掉apps標簽,再搜索academy,點擊upgrade按鈕(與官方文檔中描述不同.個人版本為10.0).
或者
通過運行$ odoo-bin --addons-path addons,my-modules -d academy -u academy命令在重啟時候自動更新.

Storing data in Odoo

  • Odoo 模型映射到數(shù)據(jù)庫的表.

  • 通過設(shè)置'security/ir.model.access.csv'來為模型增加訪問權(quán)限控制

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_academy_teachers,access_academy_teachers,model_academy_teachers,,1,0,0,0

在這段代碼中,第一行分別列出了模型的屬性,以及訪問權(quán)限 讀/寫/新建/刪除.
第二行中需要注意的是group_id:id留空了,這代表這個訪問控制的對象是全部用戶.

-note : 數(shù)據(jù)文件(Data files, XML或者CSV格式的)需要添加到__manifest__里面. python文件(models和controllers)不需要添加到那個文件里面,但是需要被init.py文件引用.

-warning: 管理員用戶繞過訪問控制,即使未授予訪問權(quán)限,他們也可以訪問所有模型.

Demonstration data

  • 數(shù)據(jù)文件可用于演示和非演示數(shù)據(jù)。演示數(shù)據(jù)僅以“演示模式”加載,可用于流測試和演示,非演示數(shù)據(jù)始終加載并用作初始系統(tǒng)設(shè)置.

  • 使用演示數(shù)據(jù)只是為了測試.

Accessing the data

-這里使用了一個ORM API里面的search()方法.

Website support

  • 添加website作為academy的依賴.
  • 在controller的route中增加website=true標識,這在請求對象中增加新標識,允許在模板中使用website布局.

URLs and routing

controller方法通過關(guān)鍵字 route()裝飾器與路由相關(guān)聯(lián),路由字符串和多個屬性來定制其行為或安全性。

  • Odoo提供了一個稱為模型的額外轉(zhuǎn)換器,當給定它們的id時直接提供記錄

Field edition

  • 對于記錄字段,模板可以使用特殊的t-field指令,該指令允許從網(wǎng)站編輯字段內(nèi)容。

  • t-field可以選擇顯示格式.

Administration and ERP integration

  • 默認情況下,Odoo模型基本上是用戶不可見的。要使其可見,它必須通過一個操作,通常通過菜單來顯示。

  • 模型關(guān)系 多對一(many2one) 一對多(one2many).

Discussions and notifications

在這章中按照官方教程無法運行.會報錯
'''
TypeError: Model 'academy.courses' inherits from non-existing model 'mail.thread'.
'''
不知道個人問題還是官方教程疏漏了. 根據(jù)報錯原因個人認為可能里面_inherit = 'mail.thread'需要mail模塊.但是直接在depends里面添加會提示找不到這個模塊.
后來在網(wǎng)頁apps里面添加之后再的depends添加就可以了.這是比較費解的地方.

Selling courses

官網(wǎng)有些地方給的不是很詳細,如果不明白哪里改動了可以查看源碼目錄下doc里面的更改記錄.

但是跟著官方最后重啟Odoo時會報錯

ParseError: "External ID not found in the system: website_sale.categ_others" while parsing /odoo/odoo-server/addons/academy/data.xml:4, near<record model="product.public.category" id="category_courses">```
最后參考這個解決了. [[Odoo 9.0 Website tutorial - Selling Courses](https://www.odoo.com/zh_CN/forum/help-1/question/odoo-9-0-website-tutorial-selling-courses-100267)](https://www.odoo.com/zh_CN/forum/help-1/question/odoo-9-0-website-tutorial-selling-courses-100267)

解決的辦法是

In data.xml file:

remove ref="website_sale.categ_others"


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容