跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

F

franciewang

@franciewang
关于
帖子
27
主题
8
群组
0
粉丝
0
关注
1

帖子

最新 最佳 有争议的

  • 请问下多个页面共用一个模型
    F franciewang

    直接上代码,你参考一下吧

    <!-- 客户action -->
    <record model="ir.actions.act_window" id="archives_common_customer_action_window">
        <field name="name">客户</field>
        <field name="res_model">archives.customer</field>
        <field name="view_mode">tree,form</field>
        <!-- 核心 -> domain -->
        <field name="domain">[('is_customer', '!=', False)]</field>
        <field name="search_view_id" ref="customer_search_view"/>
    </record>
    
    <!-- 客户action 绑定treeView -->
    <record model="ir.actions.act_window.view" id="archives_common_customer_action_window_tree">
        <field eval="1" name="sequence"/>
        <field name="view_mode">tree</field>
        <field name="view_id" ref="archives_common_customer_list"/>
        <field name="act_window_id" ref="archives_common_customer_action_window"/>
    </record>
    
    <!-- 客户action 绑定formView -->
    <record model="ir.actions.act_window.view" id="archives_common_customer_action_window_form">
        <field eval="2" name="sequence"/>
        <field name="view_mode">form</field>
        <field name="view_id" ref="archives_common_customer_edit"/>
        <field name="act_window_id" ref="archives_common_customer_action_window"/>
    </record>
    
    <!-- 客户action 绑定menu -->
    <menuitem name="客户" id="archives.menu_sale_customer" parent="archives.menu_sale"
                      action="archives_common_customer_action_window"/>
    
    
    
    <!-- 供应商action -->
    <record model="ir.actions.act_window" id="archives_common_provider_action_window">
        <field name="name">供应商</field>
        <field name="res_model">archives.customer</field>
        <field name="view_mode">tree,form</field>
        <!-- 核心 -> domain -->
        <field name="domain">[('is_provider', '!=', False)]</field>
        <field name="search_view_id" ref="provider_search_view"/>
    </record>
    
    <!-- 供应商action 绑定treeView -->
    <record model="ir.actions.act_window.view" id="archives_common_provider_action_window_tree">
        <field eval="1" name="sequence"/>
        <field name="view_mode">tree</field>
        <field name="view_id" ref="archives_common_provider_list"/>
        <field name="act_window_id" ref="archives_common_provider_action_window"/>
    </record>
    
    <!-- 供应商action 绑定formView -->
    <record model="ir.actions.act_window.view" id="archives_common_provider_action_window_form">
        <field eval="2" name="sequence"/>
        <field name="view_mode">form</field>
        <field name="view_id" ref="archives_common_provider_edit"/>
        <field name="act_window_id" ref="archives_common_provider_action_window"/>
    </record>
    
    <!-- 供应商action 绑定menu -->
    <menuitem name="供应商" id="archives.menu_purchase_provider" parent="archives_menu_purchase"
                      action="archives_common_provider_action_window"/>
    

  • 利用 odoo 自带类 odoo.test.common.TransactionCase 进行单元测试,发现 对 唯一性验证 @api.constrain 中的代码不执行,除了直接添加 数据库 约束的方法,有没有办法 执行 @api.constrain 中代码的方法?
    F franciewang

    搞清楚原因了:
    员工 唯一性 验证代码中,获取count 变量处 是有问题的。

    count = self.env[' archives.common_archive'].search_count(
    [('name', '=', self.name), ('id', '!=', self.id)])
    这一行有问题, env 后面跟的 环境 是错误的, 换成 self._name 就好了, 略显尴尬。。


  • 利用 odoo 自带类 odoo.test.common.TransactionCase 进行单元测试,发现 对 唯一性验证 @api.constrain 中的代码不执行,除了直接添加 数据库 约束的方法,有没有办法 执行 @api.constrain 中代码的方法?
    F franciewang

    debug的时候,是进入了 _check_name 方法的, 但是 变量 count 第二次创建的时候,其值 仍旧为 0 ,这到底是什么原因?


  • 利用 odoo 自带类 odoo.test.common.TransactionCase 进行单元测试,发现 对 唯一性验证 @api.constrain 中的代码不执行,除了直接添加 数据库 约束的方法,有没有办法 执行 @api.constrain 中代码的方法?
    F franciewang
    • 测试 员工 唯一性 代码:
    def test_staff_name_unique(self):
            """
            2、测试“名称“的唯一性。
            创建{名称}=销售员1 ,{用户}=空,{销售员}=勾选,{采购员}=非勾选,{发货人}=非勾选。
            报{名称}不能重复错误
            :return:
            """
            same_name = '销售员1'
            vals_list = [
                {'name': same_name, 'is_sale_man': True},
                {'name': same_name, 'is_sale_man': True},
            ]
            self.env['archives.staff'].create(vals_list[0])
            try:
                record = self.env['archives.staff'].create(vals_list[1])
                if record:
                    print 'Failed! \n 创建第二个 名为 “%s” 的员工 成功 \n [员工]档案{名称} 唯一性 测试有误。' % same_name
            except Exception as e:
                print '创建第二个 名为 “%s” 的员工 失败\n error_info:%s \n [员工]档案{名称} 唯一性 测试无误。' \
                      % (e.message, same_name)
    
    • 员工 唯一性 验证代码:
    @api.constrains('name')
        def _check_name(self):
            count = self.env['archives.common_archive'].search_count(
                [('name', '=', self.name), ('id', '!=', self.id)])
            if not count:
                return
            raise ValidationError('名称已存在')
    
    • 测试 console 内容:

    Testing started at 上午11:03 ...
    /home/francie/miniOdoo/venv/bin/python /home/francie/pycharm-2019.2/helpers/pycharm/_jb_unittest_runner.py --target test_staff.StaffTestCase.test_staff_name_unique
    Launching unittests with arguments python -m unittest test_staff.StaffTestCase.test_staff_name_unique in /home/francie/miniOdoo/addons_mine/archives/tests/archives
    Ran 1 test in 0.962s
    OK
    Process finished with exit code 0
    No handlers could be found for logger "odoo.fields"
    Failed!
    创建第二个 名为 “销售员1” 的员工 成功
    [员工]档案{名称} 唯一性 测试有误。


  • BOM 不同地点仓库 物料清单设置问题!求帮助
    F franciewang

    @Aolanbo 你这是二次开发,还是实施配置?


  • 关于odoo多线程方面的请教。
    F franciewang

    具体情况是这样的:
    _________________________________________
    我想要写一个 定时调用的方法,用来同时连接 钉钉的 多个组织(有各自验证的 appkey 和 appsecret),然后 从 钉钉的 多个组织中 获取 考勤信息,这个需要另外 再写多线程么?
    _________________________________________
    单钉钉组织获取考勤信息的定时调用方法以及逻辑 已经完备,但多组织的情况下,如果 串行执行请求,在定时调用的时间内,不一定能执行完毕,所以我想问需不需要采取多线程方式,如果采用的话,odoo有封装好的多线程方法么?


  • 【求学】关于selection字段动态填充选项
    F franciewang

    个人认为,利用many2one或者many2many类型的控件 应该可以解决这个问题(List_A和Slct_B要单独声明一个类)。
    ____________________________________________________________________________________________

    1、声明两个类 Slct_A 和 Slct_B(继承models.Model)。
    2、List_A和List_B的值 你可以获取到,然后把获取的值,插入到Slct_B的模型里,这样Slct_B控件就可以进行选择。
    3、在要用到Slct_A 和 Slct_B这两个字段的模型(target_model)中,添加字段以及显示控件。

        py:
        slct_a = fields.Many2one(comodel_name='slct_a',string=u'下拉控件A')
        slct_b = fields.Many2many(comodel_name='slct_b',relation='model_name_slct_b',string=u'下拉控件B')
        xml:
        <field name="slct_B" widget="many2many_tags"/>
    

    4、在target_model,定义 Slct_B 字段的 onchange 方法,Slct_B 控件发生变化,清空 Slct_A 模型中的所有数据,然后再根据 Slct_B 控件的值,插入对应数据。

      @api.onchange('slct_b')
      _onchange_for_slct_b (self):
        value_of_slct_b = self.slct_b 
        if value_of_slct_b :
             # step1:清空 Slct_A 模型中的所有数据,可以用原生sql。
             # step2:根据value_of_slct_b向Slct_A插入相应值。
    

    我觉得上面的思路可以说得通,但我没写代码,你可以验证一下,不过,如果操作很频繁对数据库可能会有一定的压力。希望对你有帮助。


  • 跪求,关于按钮弹窗的问题!!!!
    F franciewang

    后台models中,在弹窗 模型中 加入 布尔类型的字段,在views中,在弹窗 模型的xml 把布尔类型字段添加上去,然后在 弹出窗界面 ,这些布尔类型字段,就会以复选框形式展现,当你选取过后,点击某个按钮,触发后台方法,通过self 中的缓存,就可以 拿到页面上,到底选取了哪些字段了, true表示 已选择的。


  • odoo10在修改明细时,怎么获取修改前字段的值?
    F franciewang

    已经找到了解决方法,在write 方法中,参数value--> type <list> 包裹的值,如下图:
    7b5e4873-509d-4c37-8a1c-d1803689ca68-image.png
    其中value中的list: 第一个元素 表示 操作类型,0:添加明细, 1:修改, 2:删除, 4:不变,第二个元素 表示 明细id,第三个元素 表示 修改的内容。

    要获得修改前的值,可以根据其中第二个元素 id,通过browse 方法 就可以查询到 修改前的 数据行。

    如果各位有更好的方法可以在下面继续留言。


  • odoo10在修改明细时,怎么获取修改前字段的值?
    F franciewang

    odoo10在修改明细时,怎么获取修改前字段的值?如题。


  • 关于odoo中的索引,查询等数据库优化问题
    F franciewang

    1、odoo中添加索引有必要么
    2、如果有必要的话,odoo中添加索引有什么注意事项,应该给哪些字段添加索引较为合理,另外联合索引怎么添加?
    3、添加索引后,有什么注意事项?eg:某表为数据量很大的表,索引字段较多,需要在大量更新数据(update)时,删除索引,并执行update,之后再重新加入索引
    4、odoo中orm与执行源生sql两个在什么场景下效率会相对较高,各有什么
    5、关于数据库优化,还有什么其他方法与建议?


  • odoo 某字段的默认值存在哪了 ?有存默认值的字段吗?
    F franciewang

    应该是在后台程序写死的吧,demo_field = fields.Integer(default = 1),在default参数里定义的。


  • 关于models的字段动态 域值(fields中的domain参数),相关问题。
    F franciewang

    @digitalsatori 可以了,万分感谢!!


  • 关于models的字段动态 域值(fields中的domain参数),相关问题。
    F franciewang

    @digitalsatori 刚刚试了一下你这种写法会直接报错的... 原因是,在goods_place_id对应的模型里,是不存在 这个“parent”的字段的...


  • 关于models的字段动态 域值(fields中的domain参数),相关问题。
    F franciewang

    另外,上面仅仅是一个我能想到的示例。


  • 关于models的字段动态 域值(fields中的domain参数),相关问题。
    F franciewang

    @digitalsatori 这个方法试过,这个是要求在同一个模型里,才会生效。我想要的结果是 用主表(单据)中的字段,过滤从表(单据的细单,主表与从表是一对多关系,主表中从表是一个one2many的字段)中的某个字段。


  • [已解决] odoo 默认搜索
    F franciewang

    微信图片_20190513094248.png
    这个示例在odoo10是生效的,仅供参考。


  • 关于models的字段动态 域值(fields中的domain参数),相关问题。
    F franciewang

    下面用一个简单的示例来描述问题所在:
    1、首先【库位】这个档案,有一个 “仓库”的字段(store_id),也即“库位”是要挂“仓库”的。
    2、现在某单据存在“仓库”这个字段(store_id),此单据明细 存在 “库位”的字段(goods_place_id)。
    3、现在要求,在更改单据store_id时, 明细中的 goods_place_id 要受到 store_id 的过滤。
    4、question:如何处理上述类似场景的问题?


  • 关于动态domain域值,相关提问。
    F franciewang

    现在有一个需求是这样的: 1、首先【库位】这个档案,有一个 “仓库”的字段 2、现在某单据存在“仓库”的字段(store_id),此单据明细 存在 “库位”的字段(goods_place_id) 3、现在要求,更改单据store_id时, 明细中的 goods_place_id 只能选择 【库位】档案中 “仓库”字段 与 store_id相同的 库位。此需求如何实现?


  • odoo10通过js获取到模型的json数据后,如果让数据在页面加载出来后以tree形式展示出来?
    F franciewang

    @digitalsatori 在 odoo10通过js获取到模型的json数据后,如果让数据在页面加载出来后以tree形式展示出来? 中说:

    是要定义一个层级树吗?Odoo 10.0对有层级关系的数据结构是直接支持层级树的展示的。比如下面的HR的雇员层级列表视图:

    不是层级树,我是 想用ajax请求,拿到 json数据(后台是 dict的 list,用sql 查询出来的,但是没有保存到数据库),然后怎么把这些数据渲染,展示成odoo的tree 形式 (类比easyui,bootstrap-table 的展示方式)。
    另外,数据库的内容 ,odoo是通过什么方式,最终展示到前端的,中间的过程是什么?

  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组