美文网首页
Odoo-Building a Website随记

Odoo-Building a Website随记

作者: findsomeoneys | 来源:发表于2017-03-21 20:32 被阅读578次

    本文主要是学习Odoo官方文档 Building a Website文档中的一些个人理解以及一些问题和解决办法。用来顽固下学习,部分理解可能因为水平缘故会有点偏差,如果有错误,欢迎指出共同学习。

    Creating a basic module

    • 任务通过建立模块来执行的
    • 通过新增或者修改现有的模块可以定制odoo的特性。
      $ ./odoo-bin scaffold Academy my-modules

    这个命令自动创建了一个my-modules的目录(directory),里面包含着academy模块(models)。

    • 目录可以是已经存在的,但是模块名必须唯一。

    A demonstration module

    通过以下命令启动odoo服务器
    $ ./odoo-bin --addons-path addons,my-modules
    这条命令会把 addons和my-modules加到path里面去。

    To the browser

    • Controllers解析处理浏览器发来的请求(request),并返回响应

    Templates

    • Odoo允许使用任意python下的模板系统,但是odoo自己附带了一个模板系统QWeb.

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

    当模块有更新时,需要重启Odoo, 然后在网页中通过点击settings,然后在列表里面去掉apps标签,再搜索academy,点击upgrade按钮(与官方文档中描述不同.个人版本为10.0).
    或者
    通过运行$ odoo-bin --addons-path addons,my-modules -d academy -u academy命令在重启时候自动更新.

    Storing data in Odoo

    • Odoo 模型映射到数据库的表.

    • 通过设置'security/ir.model.access.csv'来为模型增加访问权限控制

    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
    

    在这段代码中,第一行分别列出了模型的属性,以及访问权限 读/写/新建/删除.
    第二行中需要注意的是group_id:id留空了,这代表这个访问控制的对象是全部用户.

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

    -warning: 管理员用户绕过访问控制,即使未授予访问权限,他们也可以访问所有模型.

    Demonstration data

    • 数据文件可用于演示和非演示数据。演示数据仅以“演示模式”加载,可用于流测试和演示,非演示数据始终加载并用作初始系统设置.

    • 使用演示数据只是为了测试.

    Accessing the data

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

    Website support

    • 添加website作为academy的依赖.
    • 在controller的route中增加website=true标识,这在请求对象中增加新标识,允许在模板中使用website布局.

    URLs and routing

    controller方法通过关键字 route()装饰器与路由相关联,路由字符串和多个属性来定制其行为或安全性。

    • Odoo提供了一个称为模型的额外转换器,当给定它们的id时直接提供记录

    Field edition

    • 对于记录字段,模板可以使用特殊的t-field指令,该指令允许从网站编辑字段内容。

    • t-field可以选择显示格式.

    Administration and ERP integration

    • 默认情况下,Odoo模型基本上是用户不可见的。要使其可见,它必须通过一个操作,通常通过菜单来显示。

    • 模型关系 多对一(many2one) 一对多(one2many).

    Discussions and notifications

    在这章中按照官方教程无法运行.会报错
    '''
    TypeError: Model 'academy.courses' inherits from non-existing model 'mail.thread'.
    '''
    不知道个人问题还是官方教程疏漏了. 根据报错原因个人认为可能里面_inherit = 'mail.thread'需要mail模块.但是直接在depends里面添加会提示找不到这个模块.
    后来在网页apps里面添加之后再的depends添加就可以了.这是比较费解的地方.

    Selling courses

    官网有些地方给的不是很详细,如果不明白哪里改动了可以查看源码目录下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"

    
    

    相关文章

      网友评论

          本文标题:Odoo-Building a Website随记

          本文链接:https://www.haomeiwen.com/subject/mmmgnttx.html