Button 如何创建在不自动注册/创建表单odoo13的情况下打开弹出窗口的按钮
我想创建一个按钮,打开一个弹出窗口,接管一些表单字段。 这些字段可以修改/填写。 关闭时,相关字段将更新。 在单击“保存”按钮之前,不保存或创建记录。 我不知道如何在知道没有关系字段的情况下到达那里。 我应该创建一个小部件,一个向导,两者都。。。。 请帮帮我 这是我目前的代码: test\u scale.py:Button 如何创建在不自动注册/创建表单odoo13的情况下打开弹出窗口的按钮,button,widget,odoo,wizard,autosave,Button,Widget,Odoo,Wizard,Autosave,我想创建一个按钮,打开一个弹出窗口,接管一些表单字段。 这些字段可以修改/填写。 关闭时,相关字段将更新。 在单击“保存”按钮之前,不保存或创建记录。 我不知道如何在知道没有关系字段的情况下到达那里。 我应该创建一个小部件,一个向导,两者都。。。。 请帮帮我 这是我目前的代码: test\u scale.py: # -*- coding: utf-8 -*- from odoo import models, fields, api class TestScale(models.Model):
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class TestScale(models.Model):
_name = 'test.scale'
name = fields.Char(required=True)
weighing = fields.Integer('weighing', default=0)
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="test_scale_tree_view" model="ir.ui.view">
<field name="name">test.scale.tree</field>
<field name="model">test.scale</field>
<field name="arch" type="xml">
<tree string="Test scale">
<field name="name"></field>
<field name="weighing"></field>
</tree>
</field>
</record>
<record id="test_scale_form_view" model="ir.ui.view">
<field name="name">test.scale.form</field>
<field name="model">test.scale</field>
<field name="arch" type="xml">
<form string="Test scale">
<sheet>
<group name="main_info">
<field name="name"></field>
<field name="weighing"></field>
<button name="%(test_scale_configurator_action)d"
type="action"
string="Weighing"
class="oe_highlight"
context="{'weighing': weighing}"></button>
</group>
</sheet>
</form>
</field>
</record>
<record id="saisie_menu_action" model="ir.actions.act_window">
<field name="name">Test_scale</field>
<field name="res_model">test.scale</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Aucun enregistrement
</p>
</field>
</record>
<menuitem id="test_scale_menu"
name="Test_scale"/>
<menuitem id="test_scale_saisie_menu"
parent="test_scale_menu"
name="Saisie"
action="saisie_menu_action"/>
</odoo>
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="test_scale_configurator_view_form" model="ir.ui.view">
<field name="name">test.scale.configurator.view.form</field>
<field name="model">test.scale.configurator</field>
<field name="arch" type="xml">
<form>
<field name="weighing"/>
<footer>
<button type="object"
name="button_save"
string="Save"
/>
<button special="cancel"
string="Cancel"
class="btn-secondary"/>
</footer>
</form>
</field>
</record>
<record id="test_scale_configurator_action" model="ir.actions.act_window">
<field name="name">Test Scale</field>
<field name="res_model">test.scale.configurator</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="view_id" ref="test_scale_configurator_view_form"/>
</record>
</odoo>
# -*- coding: utf-8 -*-
from odoo import models, fields
class TestScaleConfigurator(models.TransientModel):
_name = 'test.scale.configurator'
weighing = fields.Integer(string='weighing')
def button_save(self):
self.ensure_one()
return True
test\u scale.xml:
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class TestScale(models.Model):
_name = 'test.scale'
name = fields.Char(required=True)
weighing = fields.Integer('weighing', default=0)
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="test_scale_tree_view" model="ir.ui.view">
<field name="name">test.scale.tree</field>
<field name="model">test.scale</field>
<field name="arch" type="xml">
<tree string="Test scale">
<field name="name"></field>
<field name="weighing"></field>
</tree>
</field>
</record>
<record id="test_scale_form_view" model="ir.ui.view">
<field name="name">test.scale.form</field>
<field name="model">test.scale</field>
<field name="arch" type="xml">
<form string="Test scale">
<sheet>
<group name="main_info">
<field name="name"></field>
<field name="weighing"></field>
<button name="%(test_scale_configurator_action)d"
type="action"
string="Weighing"
class="oe_highlight"
context="{'weighing': weighing}"></button>
</group>
</sheet>
</form>
</field>
</record>
<record id="saisie_menu_action" model="ir.actions.act_window">
<field name="name">Test_scale</field>
<field name="res_model">test.scale</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Aucun enregistrement
</p>
</field>
</record>
<menuitem id="test_scale_menu"
name="Test_scale"/>
<menuitem id="test_scale_saisie_menu"
parent="test_scale_menu"
name="Saisie"
action="saisie_menu_action"/>
</odoo>
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="test_scale_configurator_view_form" model="ir.ui.view">
<field name="name">test.scale.configurator.view.form</field>
<field name="model">test.scale.configurator</field>
<field name="arch" type="xml">
<form>
<field name="weighing"/>
<footer>
<button type="object"
name="button_save"
string="Save"
/>
<button special="cancel"
string="Cancel"
class="btn-secondary"/>
</footer>
</form>
</field>
</record>
<record id="test_scale_configurator_action" model="ir.actions.act_window">
<field name="name">Test Scale</field>
<field name="res_model">test.scale.configurator</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="view_id" ref="test_scale_configurator_view_form"/>
</record>
</odoo>
# -*- coding: utf-8 -*-
from odoo import models, fields
class TestScaleConfigurator(models.TransientModel):
_name = 'test.scale.configurator'
weighing = fields.Integer(string='weighing')
def button_save(self):
self.ensure_one()
return True
这是由odoo的关系字段完成的,例如:- 在您的
测试称重
模型中,您的字段是称重
首先,您需要在向导中配置当前模型测试.scale
的id,以便您可以引用它,就像这样,您可以在向导中添加字段
test_scale_id = fields.Many2one(string="Test Scale")
在此之后,在主模型的xml文件中添加上下文
,其中是打开向导的按钮,如下所示
<button name="%(test_scale_configurator_action)d"
type="action"
string="Weighing"
class="oe_highlight"
context="{'default_test_scale_id': active_id}"></button>
weighing = fields.Integer(string='weighing', related='test_scale_id.weighing', readonly=False)
注意:此过程,制作字段为一次性过程。
之后,您可以使用主模型中的任何字段,并且您希望在向导中使用这些字段,您可以通过
test\u scale\u id获取这些字段-
在您的测试称重
模型中,您的字段是称重
首先,您需要在向导中配置当前模型测试.scale
的id,以便您可以引用它,就像这样,您可以在向导中添加字段
test_scale_id = fields.Many2one(string="Test Scale")
在此之后,在主模型的xml文件中添加上下文
,其中是打开向导的按钮,如下所示
<button name="%(test_scale_configurator_action)d"
type="action"
string="Weighing"
class="oe_highlight"
context="{'default_test_scale_id': active_id}"></button>
weighing = fields.Integer(string='weighing', related='test_scale_id.weighing', readonly=False)
注意:此过程,制作字段为一次性过程。
之后,您可以使用主模型中的任何字段,并且您希望在向导中使用这些字段,您可以通过测试\u scale\u id获取这些字段。谢谢你的回答。我已经做了你提议的改变。但是,当我单击打开向导的按钮时,表单会自动保存,尽管用户尚未单击保存。我希望表单仅在用户单击“保存”时保存。确定,因此在向导文件中添加readonly=False,我正在编辑我的答案,请检查。确定。通过单击一个按钮来调用向导,该按钮会自动保存我的表单,就像我单击了保存一样。但我不想在单击“称重”按钮时保存我的表单。即使经过你的修改,它也能做到。我必须通过小部件吗?如果是这样,我如何将小部件按钮连接到我的formulair.xml,以及这个小部件按钮如何调用python方法?您好。谢谢你的回答。我已经做了你提议的改变。但是,当我单击打开向导的按钮时,表单会自动保存,尽管用户尚未单击保存。我希望表单仅在用户单击“保存”时保存。确定,因此在向导文件中添加readonly=False,我正在编辑我的答案,请检查。确定。通过单击一个按钮来调用向导,该按钮会自动保存我的表单,就像我单击了保存一样。但我不想在单击“称重”按钮时保存我的表单。即使经过你的修改,它也能做到。我必须通过小部件吗?如果是这样,我如何将小部件按钮连接到formulair.xml,这个小部件按钮如何调用python方法?