如何更改 fields.One2Many 在 odoo 12 中的视图?
How to change fields.One2Many view in odoo 12?
我试图为我的发票模块创建字段。One2Many,我创建了两个不同的模块,一个称为 ms_produk,另一个称为发票,然后对于 ms_produk 我用作主产品,为项目提供 CRUD 并有一个名为 "ms_produk_ms_produk"
的 table
这是我的 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 = fields.Many2one('salesorder.salesorder')
到 link 这个 table 到我的发票模块,因为我想在我的发票模块中使用 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')
这有效,当我单击 "add a line" 时它会弹出我的主产品模块,但它以输入形式显示,我如何将其更改为仅列表?这样我就可以选择一些项目作为发票的详细信息添加?
快照:
销售订单表格:
当我点击 "add a line" 时,它显示了这样一个表单:(这是输入表单,我需要我的产品的列表视图)
它应该是我的产品列表,看起来像这样:(这是我的主模块的快照)
然后我会这样添加:(这是我从 Thayif Kabir link
获取的示例快照
**更新代码作为@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">
时Master Product View 部分变成内联 editable,所以我必须输入每一列,我需要的是一个包含产品列表的弹出窗口 window,所以我可以选择它并放入详细信息表格,我尝试 <tree editable="bottom">
然后我尝试 <tree string="details">
没有 editable 标签,它回来弹出但它是一个输入表格,它应该是列表的产品,这样我就可以检查项目并将其添加到详细信息中 table,我该怎么做?
在您的视图中,在 One2many 字段中定义您想要的字段,并确保您已在树视图中添加可编辑。如果您想将另一个模型的记录添加到您模型中的字段,您可以使用 Many2many 字段并可以从列表视图中选择产品。
Many2many 字段可以用作树视图或其他使用小部件的视图
检查此 link 以了解有关关系字段的更多信息
@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>
将新添加的部分更改为,
<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>
我试图为我的发票模块创建字段。One2Many,我创建了两个不同的模块,一个称为 ms_produk,另一个称为发票,然后对于 ms_produk 我用作主产品,为项目提供 CRUD 并有一个名为 "ms_produk_ms_produk"
的 table这是我的 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 = fields.Many2one('salesorder.salesorder')
到 link 这个 table 到我的发票模块,因为我想在我的发票模块中使用 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')
这有效,当我单击 "add a line" 时它会弹出我的主产品模块,但它以输入形式显示,我如何将其更改为仅列表?这样我就可以选择一些项目作为发票的详细信息添加?
快照:
销售订单表格:
当我点击 "add a line" 时,它显示了这样一个表单:(这是输入表单,我需要我的产品的列表视图)
它应该是我的产品列表,看起来像这样:(这是我的主模块的快照)
然后我会这样添加:(这是我从 Thayif Kabir link
获取的示例快照**更新代码作为@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">
时Master Product View 部分变成内联 editable,所以我必须输入每一列,我需要的是一个包含产品列表的弹出窗口 window,所以我可以选择它并放入详细信息表格,我尝试 <tree editable="bottom">
然后我尝试 <tree string="details">
没有 editable 标签,它回来弹出但它是一个输入表格,它应该是列表的产品,这样我就可以检查项目并将其添加到详细信息中 table,我该怎么做?
在您的视图中,在 One2many 字段中定义您想要的字段,并确保您已在树视图中添加可编辑。如果您想将另一个模型的记录添加到您模型中的字段,您可以使用 Many2many 字段并可以从列表视图中选择产品。 Many2many 字段可以用作树视图或其他使用小部件的视图 检查此 link 以了解有关关系字段的更多信息
@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>
将新添加的部分更改为,
<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>