如何在odoo 12中更改field.One2Many视图?

时间:2019-07-06 06:59:24

标签: python odoo odoo-view odoo-12

我尝试创建字段。One2Many用于我的发票模块,我创建了两个不同的模块,一个称为ms_produk,另一个称为发票,然后作为ms_produk我用作主产品,为项目提供CRUD,并有一个名为“ ms_produk_ms_produk”

这是我的ms_produk模型,如下所示:

# -*- 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')

    no_faktur = fields.Many2one('salesorder.salesorder')

我添加

  

no_faktur =字段。Many2one('salesorder.salesorder')

将此表链接到我的发票模块,因为我想在我的发票模块中使用One2Many函数

这是我的发票模块模型,该模型名为“ salesorder.py”:

# -*- 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('ms_produk.ms_produk','no_faktur','List Item')

这有效,当我单击“添加一行”时,它弹出我的主产品模块,但以输入形式显示,我如何将其更改为仅列出?这样我可以选择一些要添加为发票明细的项目?

快照: 销售订单表格: enter image description here

当我单击“添加一行”时,它显示出这样一个表格:(这是输入表格,我需要我的产品的列表视图)

enter image description here

它应该是我的产品produk的列表,看起来像这样:(这是我的主模块的快照)

enter image description here

然后我将这样添加:(这是我从Thayif Kabir link拍摄的示例快照

enter image description here

**更新的代码为@Ajmal JK答案,我试图编辑我的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 -->

        <!-- 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 -->

        <!-- 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>

当我在 主产品视图 中提供此代码<tree editable="bottom">时,运行此代码没有错误,但可以正常工作,但我不希望这样做>部分,它们变得可以内联编辑,因此我必须键入每一列,我需要的是一个包含产品列表的弹出窗口,以便我可以选择它并放入详细信息表单,我尝试做<tree editable="bottom">然后我尝试<tree string="details">没有可编辑的标签,它会返回到弹出窗口,但它是一种输入表单,它应该是产品列表,以便我可以检查该项目并将其添加到详细信息表中,该怎么做?

3 个答案:

答案 0 :(得分:2)

在视图中,在One2many字段中定义所需的字段,并确保已在树视图中添加了可编辑的字段。如果要将其他模型的记录添加到模型中的字段,则可以使用Many2many字段,并可以从列表视图中选择产品。 Many2many字段可以用作树视图或其他使用小部件的视图 选中此link,以了解有关关系字段的更多信息

答案 1 :(得分:2)

@Terrence Poe my bad, i already update my code to form view, but still error, can u help me with full code?

将您的x2m字段定义为列表。

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

答案 2 :(得分:2)

将新添加的部分更改为

       <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>