Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从Odoo中另一个视图中的另一个字段自动填充自定义视图中的字段?_Python_Odoo_Odoo 12 - Fatal编程技术网

Python 如何从Odoo中另一个视图中的另一个字段自动填充自定义视图中的字段?

Python 如何从Odoo中另一个视图中的另一个字段自动填充自定义视图中的字段?,python,odoo,odoo-12,Python,Odoo,Odoo 12,我想为每个项目都具有3个属性的某些项目的合同创建许可 我有4种型号: 合同 净空 项目 清拆项目 当我在清除模型的自定义视图中时,我选择了一个合同 从manyOne关系字段 然后尝试在中创建一个Clearance\u item\u rel记录 Clearance\u item\u rel型号 当我单击创建清除项目\u rel记录时,它会打开 新窗口中的自定义视图 我想在第一个视图中使用所选的合同id自动填充清除项目中的合同id字段,因为用户刚刚在第一个视图中选择了它 注意:clearance\u

我想为每个项目都具有3个属性的某些项目的合同创建许可 我有4种型号:

  • 合同

  • 净空

  • 项目
  • 清拆项目
  • 当我在清除模型的自定义视图中时,我选择了一个合同 从
    manyOne
    关系字段

    然后尝试在中创建一个
    Clearance\u item\u rel
    记录
    Clearance\u item\u rel
    型号

    当我单击创建
    清除项目\u rel
    记录时,它会打开 新窗口中的自定义视图

    我想在第一个视图中使用所选的合同id自动填充
    清除项目
    中的
    合同id
    字段,因为用户刚刚在第一个视图中选择了它

    注意:
    clearance\u id
    在我创建
    Clearance\u item\u rel
    从Clearance自定义视图记录,但
    contract\u id
    不行,这是我的问题

    合同:

    class Contract(models.Model):
        _name = 'clearance.contract'
        clearances = fields.One2many('clearance.clearance_item_rel', 
        'contract_id')
    

    净空:

    class Clearance(models.Model):
        _name = 'clearance.clearance'
        contract = fields.Many2one('clearance.contract','Contract')
        items = fields.One2many('clearance.clearance_item_rel',clearance_id')
    

    清除项目相关:

    class Clearance_item_rel(models.Model):
        _name = 'clearance.clearance_item_rel'
        contract_id = fields.Many2one('clearance.contract', 'Contract', ondelete='cascade')
        clearance_id = fields.Many2one('clearance.clearance', 'Clearance', ondelete='cascade')
        item_id = fields.Many2one('clearance.contract_item_rel', 'Item', ondelete='cascade')
        previous_quantity = fields.Integer()
        used_quantity = fields.Integer()
        total_price = fields.Integer()
    
    答复 您可以通过表单视图的字段定义上的上下文执行此操作示例代码

    <record id="clearance_view_form" model="ir.ui.view">
        <field name="name">clearance.view.form</field>
        <field name="model">clearance.clearance</field>
        <field name="arch" type="xml">
            <form>
                <field name="contract"/>
                <field name="items" context={'default_contract_id': contract}/>
            </form>
        </field>
    </record>
    
    
    清除
    清除,清除
    
    其中,
    default\u contract\u id
    clearance的字段名。clearance\u item\u rel
    前缀为
    default\u
    contract
    是要填充字段的值(在本例中,是
    clearance.clearance
    model上的字段名)。请注意,
    default\u contract\u id
    使用引号,而
    contract
    不使用引号

    提示

    您可能需要考虑的其他技巧,因为我看到您的代码不遵循一些ODO命名约定:

    • M2o字段名称的后缀应为
      \u id
      ,如
      合同\u id
    • O2m和M2m字段的后缀应为
      \u id
      ,如
      项目id
      清除id