Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

    整理了一部非常适合新手入门的开发手册

    Odoo 开发与实施交流
    13
    23
    22356
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Y
      yangxunbo 最后由 编辑

      今天逛了一下简书博客,发现一位网友叫luohuayong的朋友写的非常好,特别适合入门刚做开发的人用来搞明白如何开发的,由于阅读体验上还存在一些不足,故而我帮此网友整理到看云文档里,由于本身希望推荐开源,同时希望尊重原作者,请各位免费获取,但切勿去传播时篡改原作者的版权,毕竟我们希望更多的人更好的参与到odoo技术推广中来!

      访问以及获取地址:http://www.kancloud.cn/yangxunbo/odoo10dev

      上海欧思特信息科技有限公司(OST)—技术,专业,求精,务实

      ieitzyb 1 条回复 最后回复 回复 引用 0
      • W
        winbo 最后由 编辑

        赞赞赞!!!!感谢楼主

        1 条回复 最后回复 回复 引用 0
        • Y
          yangxunbo 最后由 编辑

          @粉刷匠 在 整理了一部非常适合新手入门的开发手册 中说:

          这个必须支持呀,初学者的重大福利。

          粉兄希望你这样的大神要多多共享和支持,门槛低了,大家才有机会。不然门槛高,你看现在到处抓人都抓不到!~

          上海欧思特信息科技有限公司(OST)—技术,专业,求精,务实

          1 条回复 最后回复 回复 引用 0
          • ieitzyb
            ieitzyb @yangxunbo 最后由 编辑

            @yangxunbo ,那似乎应该留下原文链接什么的吧。

            http://www.OuduPLM.com/ 苏州欧度软件,专注服装行业(鳴謝:37signals,Trello,ProcessON,重庆慧积,上海开阖)

            Y 1 条回复 最后回复 回复 引用 0
            • Y
              yangxunbo @ieitzyb 最后由 编辑

              @ieitzyb 0_1494397274523_2017-05-10_14-20-07.png
              我手册第一页就写的很清楚了,就怕别人说闲话!~

              上海欧思特信息科技有限公司(OST)—技术,专业,求精,务实

              ieitzyb 1 条回复 最后回复 回复 引用 0
              • 卓忆
                卓忆 最后由 编辑

                我们不是一个人在战斗,加油 😄

                恬淡

                1 条回复 最后回复 回复 引用 0
                • ieitzyb
                  ieitzyb @yangxunbo 最后由 编辑

                  @yangxunbo ,对我就是读正文第一页没看到,原来在概要。

                  http://www.OuduPLM.com/ 苏州欧度软件,专注服装行业(鳴謝:37signals,Trello,ProcessON,重庆慧积,上海开阖)

                  1 条回复 最后回复 回复 引用 0
                  • Z
                    zhaohuaw 最后由 编辑

                    赞赞赞!!!!感谢楼主

                    1 条回复 最后回复 回复 引用 0
                    • 柚
                      柚伴信息 最后由 编辑

                      不错不错!支持一下!

                      1 条回复 最后回复 回复 引用 0
                      • S
                        stefan_xpl 最后由 编辑

                        赞,杨总写的非常棒

                        1 条回复 最后回复 回复 引用 0
                        • 杨
                          杨晓程 最后由 编辑

                          自定义模块时报错TOT

                          S 1 条回复 最后回复 回复 引用 0
                          • S
                            stefan_xpl @杨晓程 最后由 编辑

                            @杨晓程 自己写的模块?报什么错截图看看

                            1 条回复 最后回复 回复 引用 0
                            • T
                              today1001 最后由 编辑

                              不错.很有用.谢谢.

                              1 条回复 最后回复 回复 引用 0
                              • Z
                                zysdmjj 最后由 编辑

                                按照手册一步一步做,在到第二章时自定义模块出了以下
                                Traceback (most recent call last):
                                File "D:\GOdoo10\source\odoo\http.py", line 638, in _handle_exception
                                return super(JsonRequest, self)._handle_exception(exception)
                                File "D:\GOdoo10\source\odoo\http.py", line 675, in dispatch
                                result = self._call_function(**self.params)
                                File "D:\GOdoo10\source\odoo\http.py", line 331, in _call_function
                                return checked_call(self.db, *args, **kwargs)
                                File "D:\GOdoo10\source\odoo\service\model.py", line 119, in wrapper
                                return f(dbname, *args, **kwargs)
                                File "D:\GOdoo10\source\odoo\http.py", line 324, in checked_call
                                result = self.endpoint(*a, **kw)
                                File "D:\GOdoo10\source\odoo\http.py", line 933, in call
                                return self.method(*args, **kw)
                                File "D:\GOdoo10\source\odoo\http.py", line 504, in response_wrap
                                response = f(*args, **kw)
                                File "D:\GOdoo10\source\addons\web\controllers\main.py", line 866, in call_button
                                action = self._call_kw(model, method, args, {})
                                File "D:\GOdoo10\source\addons\web\controllers\main.py", line 854, in _call_kw
                                return call_kw(request.env[model], method, args, kwargs)
                                File "D:\GOdoo10\source\odoo\api.py", line 681, in call_kw
                                return call_kw_multi(method, model, args, kwargs)
                                File "D:\GOdoo10\source\odoo\api.py", line 672, in call_kw_multi
                                result = method(recs, *args, **kwargs)
                                File "D:\GOdoo10\source\odoo\addons\base\module\module.py", line 527, in button_immediate_upgrade
                                return self._button_immediate_function(type(self).button_upgrade)
                                File "D:\GOdoo10\source\odoo\addons\base\module\module.py", line 484, in _button_immediate_function
                                modules.registry.Registry.new(self._cr.dbname, update_module=True)
                                File "D:\GOdoo10\source\odoo\modules\registry.py", line 78, in new
                                odoo.modules.load_modules(registry._db, force_demo, status, update_module)
                                File "D:\GOdoo10\source\odoo\modules\loading.py", line 333, in load_modules
                                force, status, report, loaded_modules, update_module)
                                File "D:\GOdoo10\source\odoo\modules\loading.py", line 235, in load_marked_modules
                                loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
                                File "D:\GOdoo10\source\odoo\modules\loading.py", line 156, in load_module_graph
                                _load_data(cr, module_name, idref, mode, kind='data')
                                File "D:\GOdoo10\source\odoo\modules\loading.py", line 95, in _load_data
                                tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
                                File "D:\GOdoo10\source\odoo\tools\convert.py", line 851, in convert_file
                                convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
                                File "D:\GOdoo10\source\odoo\tools\convert.py", line 921, in convert_xml_import
                                obj.parse(doc.getroot(), mode=mode)
                                File "D:\GOdoo10\source\odoo\tools\convert.py", line 802, in parse
                                self.parse(rec, mode)
                                File "D:\GOdoo10\source\odoo\tools\convert.py", line 805, in parse
                                self._tags[rec.tag](rec, de, mode=mode)
                                File "D:\GOdoo10\source\odoo\tools\convert.py", line 443, in _tag_act_window
                                id = self.env['ir.model.data']._update('ir.actions.act_window', self.module, res, xml_id, noupdate=self.isnoupdate(data_node), mode=self.mode)
                                File "D:\GOdoo10\source\odoo\addons\base\ir\ir_model.py", line 1159, in _update
                                record = record.create(values)
                                File "D:\GOdoo10\source\odoo\addons\base\ir\ir_actions.py", line 340, in create
                                return super(IrActionsActWindow, self).create(vals)
                                File "D:\GOdoo10\source\odoo\addons\base\ir\ir_actions.py", line 40, in create
                                res = super(IrActions, self).create(vals)
                                File "D:\GOdoo10\source\odoo\models.py", line 3798, in create
                                record = self.browse(self._create(old_vals))
                                File "D:\GOdoo10\source\odoo\models.py", line 3954, in _create
                                self._validate_fields(vals)
                                File "D:\GOdoo10\source\odoo\models.py", line 1058, in _validate_fields
                                check(self)
                                File "D:\GOdoo10\source\odoo\addons\base\ir\ir_actions.py", line 248, in check_model
                                raise ValidationError(
                                ('Invalid model name %r in action definition.') % action.res_model)
                                ParseError: "Invalid model name u'shouhou.shouhoudan' in action definition.
                                None" while parsing file:///D:/GOdoo10/myaddons/shouhou/views/views.xml:38, near
                                <act_window id="action_shouhou_shouhoudan" name="售后单" res_model="shouhou.shouhoudan" view_mode="tree,form"/>

                                1 条回复 最后回复 回复 引用 0
                                • Z
                                  zysdmjj 最后由 编辑

                                  在仿照着请假模块做一个简易的售后模块,然后就出现这种情况,然后用作者的源码一步一步仿照着做也是会在修改好view文件之后出现报错

                                  1 条回复 最后回复 回复 引用 0
                                  • Joshua
                                    Joshua 管理员 最后由 编辑

                                    hello @zysdmjj 你这里的错误是shouhou.shouhoudan这个模型没有在python里面定义,如果还有问题,你可以贴出你完整的代码。

                                    <act_window id="action_shouhou_shouhoudan" name="售后单" res_model="shouhou.shouhoudan" view_mode="tree,form"/>
                                    

                                    【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                                    Z 2 条回复 最后回复 回复 引用 0
                                    • Z
                                      zysdmjj @Joshua 最后由 digitalsatori 编辑

                                      @Joshua
                                      _manifest.py

                                      # -*- coding: utf-8 -*-
                                      {
                                          'name': "shouhou",
                                      
                                          'summary': """
                                              售后模块""",
                                      
                                          'description': """
                                              售后模块
                                          """,
                                      
                                          'website': "http://www.yourcompany.com",
                                      
                                          # Categories can be used to filter modules in modules listing
                                          # Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml
                                          # for the full list
                                          'category': 'Uncategorized',
                                          'version': '0.1',
                                      
                                          # any module necessary for this one to work correctly
                                          'depends': ['base'],
                                      
                                          # always loaded
                                          'data': [
                                              # 'security/ir.model.access.csv',
                                              'views/views.xml',
                                              'views/templates.xml',
                                          ],
                                          # only loaded in demonstration mode
                                          'demo': [
                                              'demo/demo.xml',
                                          ],
                                      }
                                      
                                      1 条回复 最后回复 回复 引用 0
                                      • Z
                                        zysdmjj 最后由 digitalsatori 编辑

                                        models.py

                                        from odoo import models, fields, api
                                        
                                        class shouhoudan(models.Model):
                                            _name = 'shouhou.shouhoudan'
                                            name = fields.Char(string="报修人")
                                            days = fields.Integer(string="预计处理时长")
                                            startdate = fields.Date(string="报修日期日期")
                                            reason = fields.Text(string="售后事由")
                                        

                                        view.xml

                                        <openerp>
                                            <data>
                                                <!-- tree视图 -->
                                                <record id="view_tree_shouhou_shouhoudan" model="ir.ui.view">
                                                    <field name="name">售后单列表</field>
                                                    <field name="model">shouhou.shouhoudan</field>
                                                    <field name="arch" type="xml">
                                                        <tree>
                                                            <field name="name"/>
                                                            <field name="days"/>
                                                            <field name="startdate"/>
                                                        </tree>
                                                    </field>
                                                </record>
                                        
                                                <!-- form视图 -->
                                                <record id="view_form_shouhou_shouhoudan" model="ir.ui.view">
                                                    <field name="name">售后单</field>
                                                    <field name="model">shouhou.shouhoudan</field>
                                                    <field name="arch" type="xml">
                                                        <form>
                                                            <sheet>
                                                                <group name="group_top" string="售后单">
                                                                    <field name="name"/>
                                                                    <field name="days"/>
                                                                    <field name="startdate"/>
                                                                    <field name="reason"/>
                                                                </group>
                                                            </sheet>
                                                        </form>
                                                    </field>
                                                </record>
                                        
                                                <!-- 视图动作 -->
                                                <act_window id="action_shouhou_shouhoudan"
                                                    name="售后单"
                                                    res_model="shouhou.shouhoudan"
                                                    view_mode="tree,form" />
                                        
                                                <!-- 顶级菜单 -->
                                                <menuitem name="售后" id="menu_shouhou"/>
                                        
                                                <!-- 二级菜单 -->
                                                <menuitem name="售后单" id="menu_shouhou_shouhoudan" parent="menu_shouhou" action="action_shouhou_shouhoudan"/>
                                        
                                            </data>
                                        </openerp>
                                        
                                        1 条回复 最后回复 回复 引用 0
                                        • Z
                                          zysdmjj @Joshua 最后由 编辑

                                          @Joshua 我仔细的看了一下,在对models文件和manifest文件做好修改之后,按照您给我的那份手册中的说法,似乎是需要重启服务器对Python文件进行加载(我用的是Godoo10,暂时没找到如何开启dev模式),然而反复重启多次,我添加的这个自定义模块里的models文件所定义的shouhou.shouhoudan模型也没有加载,同时我在odoo浏览器客户端中的数据库结构的模型项中搜索之后也没有发现这个模型,不知道如何将其正确的加载

                                          1 条回复 最后回复 回复 引用 0
                                          • digitalsatori
                                            digitalsatori 管理员 最后由 编辑

                                            帮你编辑了一下帖子,请用```包住你的代码,这样就能保持代码格式,并且有语法加亮了。

                                            你在__init__.py中有import 你的model.py吗?

                                            【上海先安科技】(tony AT openerp.cn)

                                            1 条回复 最后回复 回复 引用 0
                                            • First post
                                              Last post