Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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_Xml_Button_Openerp_Odoo 9 - Fatal编程技术网

如何使用Python从树视图中的单击列表重定向到Odoo中的特定表单视图?

如何使用Python从树视图中的单击列表重定向到Odoo中的特定表单视图?,python,xml,button,openerp,odoo-9,Python,Xml,Button,Openerp,Odoo 9,我使用的是API 9。首先,我制作了一个按钮来显示客户选择的一些详细产品的树状视图(如弹出窗口),该按钮在图中称为view Selected Product() 然后,当按钮单击时,它会显示所选产品的树状视图,如 所以,我想做的是,如果我们单击列表/树状视图弹出窗口中的产品,我想做一个重定向链接。因此,它将重定向到我们在列表上单击的产品的表单视图。清单上的产品是客户选择购买的产品。我的按钮只显示客户购物时选择的产品 我应该在代码中添加什么,或者应该更改什么?我真的是Python和Odoo的新手

我使用的是API 9。首先,我制作了一个按钮来显示客户选择的一些详细产品的树状视图(如弹出窗口),该按钮在图中称为view Selected Product()

然后,当按钮单击时,它会显示所选产品的树状视图,如

所以,我想做的是,如果我们单击列表/树状视图弹出窗口中的产品,我想做一个重定向链接。因此,它将重定向到我们在列表上单击的产品的表单视图。清单上的产品是客户选择购买的产品。我的按钮只显示客户购物时选择的产品

我应该在代码中添加什么,或者应该更改什么?我真的是Python和Odoo的新手

下面是我的按钮Python代码:

<openerp>
<data>
    <record id="task_4_purchase_order_form" model="ir.ui.view">
        <field name="name">purchase.order.form</field>
        <field name="model">purchase.order</field>
        <field name="inherit_id" ref="purchase.purchase_order_form"></field>
        <field name="arch" type="xml">
            <!-- Lokasi untuk menempatkan button yang akan dibuat diletakkan di sebelah button cancel -->
            <xpath expr="/form/header/button[@name='button_cancel']" position="inside">
                <!-- Membuat button  -->
                <button string="View Chosen Product(s)" type="object" name="action_view_related_products"/>
            </xpath>
        </field>
    </record>
</data>
</openerp>
来自openerp导入模型、api、字段的

课堂任务_04(模型.模型):
#继承dari模型采购订单
_继承=“采购订单”
@api.multi
def行动视图相关产品(自我):
ids=[line.product\u id.id
对于self.order_line中的行]
返回{
“名称”:(“查看所选产品”),#Nama dari选项卡弹出
'type':'ir.actions.act_window',
“视图类型”:“表单”,Tampilan pada选项卡弹出
“视图模式”:“树”,弹出菜单,树=表格树nya utk产品
“resu model”:“product.product”,显示弹出式屏幕上的标签
‘目标’:‘新’,#为了使弹出式表格更具说服力,我们不需要弹出式表格。
“视图id”:False,
'domain':[('id','in',ids)]#过滤器id
}
任务_04()
下面是查看按钮的XML代码:

<openerp>
<data>
    <record id="task_4_purchase_order_form" model="ir.ui.view">
        <field name="name">purchase.order.form</field>
        <field name="model">purchase.order</field>
        <field name="inherit_id" ref="purchase.purchase_order_form"></field>
        <field name="arch" type="xml">
            <!-- Lokasi untuk menempatkan button yang akan dibuat diletakkan di sebelah button cancel -->
            <xpath expr="/form/header/button[@name='button_cancel']" position="inside">
                <!-- Membuat button  -->
                <button string="View Chosen Product(s)" type="object" name="action_view_related_products"/>
            </xpath>
        </field>
    </record>
</data>
</openerp>

采购单
采购订单
尝试以下代码:-

  #Inherit dari model purchase.order
_inherit    =   "purchase.order"


@api.multi
def action_view_related_products(self):
    ids = [line.product_id.id 
           for line in self.order_line]
    tree_res = self.env['ir.model.data'].get_object_reference('code_residing_module_name', 'Your_tree_view_id')
    tree_id = tree_res and tree_res[1] or False
    form_res = self.env['ir.model.data'].get_object_reference('code_residing_module_name', 'Your_form_view_id')
    tree_id = form_res and form_res[1] or False

    return{
        'name'          :   ('View Chosen Products'), # Nama dari tabel pop up
        'type'          :   'ir.actions.act_window',
        'view_type'     :   'form', #Tampilan pada tabel pop-up
        'view_mode'     :   'tree,form', # Menampilkan bagian yang di pop up, tree = menampilkan tabel tree nya utk product 
        'res_model'     :   'product.product', #Menampilkan tabel yang akan di show di pop-up screen
        'target'        :   'new', # Untuk menjadikan tampilan prduct yang dipilih menjadi pop-up table tampilan baru, jika dikosongin maka tidak muncul pop-up namun muncul halaman baru.
        'views'         :   [(tree_id, 'tree'),(form_id, 'form')]
        'domain'        :   [('id','in',ids)] #Filter id barang yang ditampilkan
        }
请尝试以下代码:-

  #Inherit dari model purchase.order
_inherit    =   "purchase.order"


@api.multi
def action_view_related_products(self):
    ids = [line.product_id.id 
           for line in self.order_line]
    tree_res = self.env['ir.model.data'].get_object_reference('code_residing_module_name', 'Your_tree_view_id')
    tree_id = tree_res and tree_res[1] or False
    form_res = self.env['ir.model.data'].get_object_reference('code_residing_module_name', 'Your_form_view_id')
    tree_id = form_res and form_res[1] or False

    return{
        'name'          :   ('View Chosen Products'), # Nama dari tabel pop up
        'type'          :   'ir.actions.act_window',
        'view_type'     :   'form', #Tampilan pada tabel pop-up
        'view_mode'     :   'tree,form', # Menampilkan bagian yang di pop up, tree = menampilkan tabel tree nya utk product 
        'res_model'     :   'product.product', #Menampilkan tabel yang akan di show di pop-up screen
        'target'        :   'new', # Untuk menjadikan tampilan prduct yang dipilih menjadi pop-up table tampilan baru, jika dikosongin maka tidak muncul pop-up namun muncul halaman baru.
        'views'         :   [(tree_id, 'tree'),(form_id, 'form')]
        'domain'        :   [('id','in',ids)] #Filter id barang yang ditampilkan
        }

这个问题解决了。我只需要在“视图模式”中添加一个“表单”:“tree,form”在Python文件中

因此,它将自动向您显示客户在同一表单视图中选择的产品的详细信息。因此Python文件将如下所示:

from openerp import models, api, fields, _ 

class task_04 (models.Model):

    #Inherit dari model purchase.order
    _inherit    =   "purchase.order"

    @api.multi
    def action_view_related_products(self):
        ids = [line.product_id.id 
               for line in self.order_line]
        return{
            'name'          :   ('View Chosen Products'), # Nama dari tabel pop up
            'type'          :   'ir.actions.act_window',
            'view_type'     :   'form', #Tampilan pada tabel pop-up
            'view_mode'     :   'tree', # Menampilkan bagian yang di pop up, tree = menampilkan tabel tree nya utk product 
            'res_model'     :   'product.product', #Menampilkan tabel yang akan di show di pop-up screen
            'target'        :   'new', # Untuk menjadikan tampilan prduct yang dipilih menjadi pop-up table tampilan baru, jika dikosongin maka tidak muncul pop-up namun muncul halaman baru.
            'view_id'       :   False,
            'domain'        :   [('id','in',ids)] #Filter id barang yang ditampilkan
            }

task_04()

这个问题解决了。我只需要在“视图模式”中添加一个“表单”:“tree,form”在Python文件中

因此,它将自动向您显示客户在同一表单视图中选择的产品的详细信息。因此Python文件将如下所示:

from openerp import models, api, fields, _ 

class task_04 (models.Model):

    #Inherit dari model purchase.order
    _inherit    =   "purchase.order"

    @api.multi
    def action_view_related_products(self):
        ids = [line.product_id.id 
               for line in self.order_line]
        return{
            'name'          :   ('View Chosen Products'), # Nama dari tabel pop up
            'type'          :   'ir.actions.act_window',
            'view_type'     :   'form', #Tampilan pada tabel pop-up
            'view_mode'     :   'tree', # Menampilkan bagian yang di pop up, tree = menampilkan tabel tree nya utk product 
            'res_model'     :   'product.product', #Menampilkan tabel yang akan di show di pop-up screen
            'target'        :   'new', # Untuk menjadikan tampilan prduct yang dipilih menjadi pop-up table tampilan baru, jika dikosongin maka tidak muncul pop-up namun muncul halaman baru.
            'view_id'       :   False,
            'domain'        :   [('id','in',ids)] #Filter id barang yang ditampilkan
            }

task_04()

我应该在哪里添加该视图?当我尝试你的代码burmese先生时,我不知道我应该在get_object_reference()中填写哪个模块以及哪个id。请检查你当前的模块名称和树视图id,以及编辑后的答案,我应该在哪里添加该视图?当我尝试你的代码burmese先生,我不明白我应该在get_object_reference()中填写哪个模块以及哪个id。您当前的模块名称和树状视图id,请检查编辑后的答案谢谢发布自我回答。不过,请不要在标题中添加[已解决]——您可以单击其中一个答案旁边的勾号,使其变为绿色。感谢您发布自我回答。但请不要在标题中添加[已解决]——您可以单击其中一个答案旁边的勾号,使其变为绿色。