Python 如何在one2many弹出表单中加载另一个表的列表,以将其添加到odoo 12的主表单中?

Python 如何在one2many弹出表单中加载另一个表的列表,以将其添加到odoo 12的主表单中?,python,odoo,odoo-view,odoo-12,Python,Odoo,Odoo View,Odoo 12,如何在one2many中加载另一个表中的列表在odoo 12中的任何弹出表单?我尝试创建一个发票模块,我有两个自定义模块, 1.发票模块 2.主产品 这是我的produk.py(型号): 这是我的发票模块部分,我有这个salesorder.py模型: # -*- coding: utf-8 -*- from odoo import models, fields, api class ProdukProduk(models.Model): _name = 'ms_produk.ms_p

如何在one2many中加载另一个表中的列表在odoo 12中的任何弹出表单?我尝试创建一个发票模块,我有两个自定义模块, 1.发票模块 2.主产品

这是我的produk.py(型号):

这是我的发票模块部分,我有这个salesorder.py模型:

# -*- coding: utf-8 -*-

from odoo import models, fields, api

class ProdukProduk(models.Model):
    _name = 'ms_produk.ms_produk'

    kd_produk = fields.Char(String='Kode Produk', required=True)
    nm_produk = fields.Char(String='Nama Produk', required=True)
    tanggal_input = fields.Datetime(string='Tanggal Input', default=fields.Datetime.now())
    tanggal_aktif = fields.Datetime(string='Tanggal Aktif', default=fields.Datetime.now())
    status_aktif = fields.Boolean('Status Aktif', default=True)
    keterangan = fields.Html(string='Keterangan')
# -*- coding: utf-8 -*-

from odoo import models, fields, api

class SalesorderSalesorder(models.Model):
    _name = 'salesorder.salesorder'

    no_faktur = fields.Char(String='No Faktur', required=True)
    kd_dealer = fields.Char(String='Kode Dealer', required=True)
    nm_dealer = fields.Char(String='Nama Dealer', required=True)
    tanggal_faktur = fields.Datetime(string='Tgl Faktur', default=fields.Datetime.now())
    keterangan = fields.Html(string='Keterangan')
    kd_sales = fields.Many2one('res.users', string='Kode Sales')
    details = fields.One2many('salesorderdetails','no_faktur','List Item')
# -*- coding: utf-8 -*-

from odoo import models, fields, api

class SalesOrderDetails(models.Model):
    _name = 'salesorderdetails'

    kd_produk = fields.Char(String='Kode Produk', required=True)
    nm_produk = fields.Char(String='Nama Produk', required=True)
    qty = fields.Integer(String='Qty', required=True)
    harga = fields.Float(String='Nama Produk', required=True)
    no_faktur = fields.Many2one('salesorder.salesorder')
和salesorderdetails.py(型号):

它工作了,但是我需要添加一个行弹出视图来加载我的产品列表,这样我就可以选择一个产品添加到salesorderdetails行,我该怎么做?我不知道从哪里开始在弹出视图中添加一些值

我的代码就是这样出现的:

这是我想要的样子,下面这张照片是我用photoshop处理的:

因此,我可以选择项目并将其添加到salesorderdetails表中,我如何实现这一点

更新了terrace poe答案,以下是我的salesorder_view.xml:

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <data>

        <record id="salesorder_menu_action" model="ir.actions.act_window">
            <field name="name">SalesOrders</field>
            <field name="res_model">salesorder.salesorder</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="domain">[]</field>
            <field name="help" type="html">
                <p class="oe_view_nocontent_create">Create SalesOrders
                </p>
            </field>
        </record>

<!-- newly added -->

        <!-- main salesorder list-->
        <record id="salesorder_list" model="ir.ui.view" >
            <field name="name">salesorder list</field>
            <field name="model">salesorder.salesorder</field>
            <field name="type">tree</field>
            <field name="arch" type="xml">
                <tree string="List SO">
                    <field name="no_faktur"/>
                    <field name="nm_dealer"/>
                    <field name="kd_dealer"/>
                    <field name="tanggal_faktur"/>
                </tree>
            </field>
        </record>
        <!-- end of main salesorder list-->

        <!-- salesorder view -->
        <record id="salesorder_tree" model="ir.ui.view">
            <field name="name">salesorder.form.tree</field>
            <field name="model">salesorder.salesorder</field>
            <field name="type">tree</field>
            <field name='arch' type="xml">
                <field name='details'>
                    <tree string="SalesOrder" editable="bottom">
                        <field name="kd_produk"/>
                        <field name="nm_produk"/>
                    </tree>
                </field>
            </field>
        </record>
        <!-- end of salesorder view -->

        <!-- details -->
        <record id="detail_tree_view" model="ir.ui.view">
            <field name="name">sodetails</field>
            <field name="model">salesorderdetails</field>
            <field name="view_mode">tree</field>
            <field name="arch" type="xml">
                <tree>
                    <field name="kd_produk"/>
                    <field name="nm_produk"/>
                    <field name="qty"/>
                    <field name="harga"/>
                    <field name='item_ids'>
                        <tree>
                            <field name='kd_produk'/>
                            <field name='nm_produk'/>
                        </tree>
                    </field>
                </tree>
            </field>
            <field name="view_id" ref="salesorder_tree"/>
            <field name="act_window_id" ref="salesorder_menu_action"/>
        </record>
        <!-- end of details -->

        <!-- master product view -->
        <!-- <record id="browse_msproduk_tree_view" model="ir.ui.view">
            <field name="name">ms_produk</field>
            <field name="model">ms_produk.ms_produk</field>
            <field name="view_mode">tree</field>
            <field name="arch" type="xml">
                <tree editable="bottom">
                    <field name="kd_produk"/>
                    <field name="nm_produk"/>
                    <field name="tanggal_input"/>
                </tree>
            </field>
            <field name="view_id" ref="salesorder_tree"/>
            <field name="act_window_id" ref="salesorder_menu_action"/>
        </record> -->
        <!-- end of master product view -->

<!-- end of newly added -->

        <menuitem id="salesorder_menu" name="SalesOrder"/>
        <menuitem id="Salesorder_neworder_menu" 
                parent="salesorder_menu" 
                name="New Order"
                action="salesorder_menu_action"/>
    </data>
</odoo>
它起作用了,但不是我想要的结果,现在看起来是这样的:

我不想填充其他列,我只想选择项目并将其添加到salesorderdetails表中,似乎我将我的产品添加到salesorderdetail列中,名为item,应该看起来像我编辑的图像。我需要将ms_product.ms_product中的kd_produk和nm_produk值添加到salesorderdetails中的kd_produk和nm_produk中


这一个

您想在salesorderdetails中显示ProdukProduk的列表,对吗?
如果为true,请在salesorderdetails中设置m2m字段。像

class SalesOrderDetails(models.Model):
_名称='salesorderdetails'
kd_produk=fields.Char(String='Kode produk',required=True)
nm_produk=fields.Char(String='Nama produk',required=True)
数量=字段。整数(字符串='数量',必需=True)
harga=fields.Float(String='Nama Produk',required=True)
no_faktur=fields.manyOne('salesorder.salesorder'))
item_id=fields.Many2many(comodel_name='ms_produk.ms_produk')
然后,您应该在salesorderdetails的表单视图中添加项目ID


您可以看到这样的视图

如果在odoo目录中找不到该模板,请尝试直接以开发人员模式修改它。

你想在salesorderdetails中显示
ProdukProduk
列表,对吗?嗨,terrence poe,我已经用你的答案更新了我的代码,但这不是我想要的结果,看起来像是,你能帮我看一看和我编辑的屏幕截图吗?你的意思是想让项目ID字段可以显示你发布的第二张图片中的产品吗?(我可以看到的图片有3种产品。)?您要显示的产品列表是默认方式还是自定义方式?如果是默认方式,
item_id
field attach`default=lambda self:self.env['ms_produk.ms_produk']。搜索([])可能是答案。如果您想问更多问题,请输入此项。如果我有空,我会回答你的。
# -*- coding: utf-8 -*-

from odoo import models, fields, api

class SalesOrderDetails(models.Model):
    _name = 'salesorderdetails'
    # _inherit = 'salesorder.salesorder'

    kd_produk = fields.Char(String='Kode Produk', required=True)
    nm_produk = fields.Char(String='Nama Produk', required=True)
    qty = fields.Integer(String='Qty', required=True)
    harga = fields.Float(String='Nama Produk', required=True)
    no_faktur = fields.Many2one('salesorder.salesorder')
    # just added
    item_ids = fields.Many2many(comodel_name='ms_produk.ms_produk')
    # end of just added