Javascript 在Odoo 10中的小部件内显示FormView

Javascript 在Odoo 10中的小部件内显示FormView,javascript,widget,odoo,odoo-10,formview,Javascript,Widget,Odoo,Odoo 10,Formview,我可以创建一个小部件,它将模型名作为参数并呈现模型的表单视图吗 我的期望是: 当用户单击菜单时,模型表单以编辑模式显示(“mymodule.asset_category”) 然后用户选择一个类别下拉列表。例如“资产”。(“资产”资产类别的“相关模型”字段的类型为“ir.model”,其值为“mymodule.Asset”) 使用户能够创建新的相关模型('mymodule.asset')实例的新表单是在父表单中创建的 用户填写资产字段,然后单击保存按钮 因此,“mymodule.asset\u c

我可以创建一个小部件,它将模型名作为参数并呈现模型的表单视图吗

我的期望是:

  • 当用户单击菜单时,模型表单以编辑模式显示(“mymodule.asset_category”)
  • 然后用户选择一个类别下拉列表。例如“资产”。(“资产”资产类别的“相关模型”字段的类型为“ir.model”,其值为“mymodule.Asset”)
  • 使用户能够创建新的相关模型('mymodule.asset')实例的新表单是在父表单中创建的
  • 用户填写资产字段,然后单击保存按钮
  • 因此,“mymodule.asset\u category”、“mymodule.asset”对象保存到数据库中
  • 我想我可以通过使用向导按顺序显示表单来实现这些功能。但我想知道,至少这样做是否可行。 我尝试了以下方法:

    class AssetCategory(models.Model):
        _name = 'mymodule.asset_category'
        name = fields.Char(string=u'Category', required="True")
    
        related_model = fields.Many2one('ir.model', string=u'Related model')
    
    class Asset(models.Model):
        _name = 'mymodule.asset'
        name = fields.Char(string=u'Asset Name', required="True")
        amount = fields.Float(string=u'Amount', digit=[12, 2])
    
    XML将类似于:

    <record model="ir.ui.view" id="asset_form_view">
                <field name="name">mymodule_asset_form</field>
                <field name="model">mymodule.asset_category</field>
                <field name="arch" type="xml">
                    <form string="asset category">
                        <sheet>
                            <field name="name"></field>
                            <field name="related_model"></field>
                            <widget type="my_widget"></widget>
                        </sheet>
                    </form>
                </field>
            </record>
    
    我的当前代码引发以下错误:

    http://localhost:8069/web/static/src/js/views/form_view.js:1239
    Алдааны мөр:
    TypeError: Cannot read property 'attrs' of undefined
        at Class.set_fields_view (http://localhost:8069/web/static/src/js/views/form_view.js:1239:49)
        at Class.start (http://localhost:8069/web/static/src/js/views/form_view.js:97:31)
        at Class.prototype.<computed> [as start] (http://localhost:8069/web/static/src/js/framework/class.js:89:38)
        at http://localhost:8069/web/static/src/js/framework/widget.js:193:25
        at http://localhost:8069/web/static/lib/jquery/jquery.js:3276:89
        at fire (http://localhost:8069/web/static/lib/jquery/jquery.js:3119:58)
        at Object.add [as done] (http://localhost:8069/web/static/lib/jquery/jquery.js:3165:49)
        at Array.<anonymous> (http://localhost:8069/web/static/lib/jquery/jquery.js:3275:77)
        at Function.each (http://localhost:8069/web/static/lib/jquery/jquery.js:383:58)
        at Object.<anonymous> (http://localhost:8069/web/static/lib/jquery/jquery.js:3272:56)
    
    http://localhost:8069/web/static/src/js/views/form_view.js:1239
    Алдааны мөр:
    TypeError:无法读取未定义的属性“attrs”
    在Class.set\u字段\u视图中(http://localhost:8069/web/static/src/js/views/form_view.js:1239:49)
    开始上课时(http://localhost:8069/web/static/src/js/views/form_view.js:97:31)
    在课堂上。[作为开始](http://localhost:8069/web/static/src/js/framework/class.js:89:38)
    在http://localhost:8069/web/static/src/js/framework/widget.js:193:25
    在http://localhost:8069/web/static/lib/jquery/jquery.js:3276:89
    着火(http://localhost:8069/web/static/lib/jquery/jquery.js:3119:58)
    在Object.add[完成时](http://localhost:8069/web/static/lib/jquery/jquery.js:3165:49)
    在阵列上。(http://localhost:8069/web/static/lib/jquery/jquery.js:3275:77)
    在功能上,每个(http://localhost:8069/web/static/lib/jquery/jquery.js:383:58)
    反对。(http://localhost:8069/web/static/lib/jquery/jquery.js:3272:56)
    
    据我所知,您对Odoo很熟悉,您已经听说过
    hr\u时间表\u表
    模块

    您可以查看本模块以供参考

    hr\u时间表\u表
    :-


    结果类似于FormView内部的FormView小部件。所以保存按钮也应该是自定义的。
    http://localhost:8069/web/static/src/js/views/form_view.js:1239
    Алдааны мөр:
    TypeError: Cannot read property 'attrs' of undefined
        at Class.set_fields_view (http://localhost:8069/web/static/src/js/views/form_view.js:1239:49)
        at Class.start (http://localhost:8069/web/static/src/js/views/form_view.js:97:31)
        at Class.prototype.<computed> [as start] (http://localhost:8069/web/static/src/js/framework/class.js:89:38)
        at http://localhost:8069/web/static/src/js/framework/widget.js:193:25
        at http://localhost:8069/web/static/lib/jquery/jquery.js:3276:89
        at fire (http://localhost:8069/web/static/lib/jquery/jquery.js:3119:58)
        at Object.add [as done] (http://localhost:8069/web/static/lib/jquery/jquery.js:3165:49)
        at Array.<anonymous> (http://localhost:8069/web/static/lib/jquery/jquery.js:3275:77)
        at Function.each (http://localhost:8069/web/static/lib/jquery/jquery.js:383:58)
        at Object.<anonymous> (http://localhost:8069/web/static/lib/jquery/jquery.js:3272:56)