Python Odoo 10-标准树和日历视图中One2many的显示字段
多亏了这个网站上聪明人的帮助,我现在在我的模块中有了一个很好的One2many字段,可以像在销售模块中一样添加多个订单行。它工作得很好,但现在为了方便起见,我希望能够在我的树和日历视图中的任何字段中看到One2many中的某个字段。但是,当我尝试使用下面描述的方法显示该字段时,我得到的只是记录数。特别是,我希望它显示添加到订单行的所有产品。以下是相关代码: 型号.pyPython Odoo 10-标准树和日历视图中One2many的显示字段,python,xml,openerp,odoo-10,Python,Xml,Openerp,Odoo 10,多亏了这个网站上聪明人的帮助,我现在在我的模块中有了一个很好的One2many字段,可以像在销售模块中一样添加多个订单行。它工作得很好,但现在为了方便起见,我希望能够在我的树和日历视图中的任何字段中看到One2many中的某个字段。但是,当我尝试使用下面描述的方法显示该字段时,我得到的只是记录数。特别是,我希望它显示添加到订单行的所有产品。以下是相关代码: 型号.py # -*- coding: utf-8 -*- from odoo import models, fields, api fr
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.addons import decimal_precision as dp
class mymodule_base(models.Model):
_name = 'mymodule.mymodule'
_description = 'My Module'
operations = fields.One2many('mymodule.line', 'order_id', 'Operation Lines')
class mymodule_line(models.Model):
_name = 'mymodule.line'
_description = 'Order Line'
order_id = fields.Many2one('mymodule.mymodule')
product_id = fields.Many2one('product.template', string='Repair / Part', required=False)
views.xml
<record id="mymodule.calendar" model="ir.ui.view">
<field name="name">MyModule Calendar</field>
<field name="model">mymodule.mymodule</field>
<field name="arch" type="xml">
<calendar string="Repairs" date_start="date_received" date_stop="date_due" color="state">
<field name="operations">
<field name="product_id"/>
</field>
</calendar>
</field>
</record>
<record model="ir.ui.view" id="mymodule.list">
<field name="name">MyModule list</field>
<field name="model">mymodule.mymodule</field>
<field name="arch" type="xml">
<tree>
<field name="operations">
<field name="product_id"/>
</field>
</tree>
</field>
</record>
在列表视图下
<field name="operations" widget="one2many_list" mode="tree">
<field name="product_id" invisible="True"/>
<field name="product_name"/>
</field>
然后,我在列表视图中定义此字段,如下所示:
<field name="product_name"/>
这几乎满足了我的需求,只是它只显示一个产品的名称,而不是所有产品的名称。您是否尝试为您的
操作字段添加适当的widget=“one2many\u list”
?就像发票上的行。我希望这能帮助你
编辑:
使用One2many相关领域的文档说明:
模式
对于One2many,显示模式(视图类型)用于字段的链接记录。树、表单、看板或图形之一。默认为树(列表显示)
首先,在小部件定义旁边添加mode属性,并设置要查找的模式。
其次,要获取产品名称,您应该在“mymodule.line”中创建一个相关字段,如下所示:
product_name = fields.Char(related='product_id.name', store=True)
并修改视图,以设置产品idinvisible=“true”
,然后添加
警告:不要避免视图中的产品\u id定义,因为相关字段无法正常工作
相关领域的信息
编辑2:
对于列表视图,请尝试以下操作:
<record model="ir.ui.view" id="mymodule.list">
<field name="name">MyModule list</field>
<field name="model">mymodule.mymodule</field>
<field name="arch" type="xml">
<field name="operations" widget="one2many_list">
<tree>
<field name="product_id" invisible="True"/>
<field name="product_name" />
</tree>
</field>
</field>
我的模块列表
mymodule.mymodule
对于您的日历视图,应该遵循相同的结构。我尝试了您的建议,但它只是将字段从显示文本“(5条记录)”更改为“384385386387388”。我希望它在每个记录中显示产品的名称(产品id)。它似乎显示的是operations字段的值,而不是其中的product_id字段。我还应该指出,我所说的不是表单视图中的树视图,而是模块最初打开的列表视图。我也希望它能在日历视图中工作。谢谢你的建议,但它似乎对我不起作用。我用新代码更新了我的问题。如果我做得对,请告诉我。我可能不会百分之百地关注你。同样,它只显示数字,而不显示产品名称。不幸的是,它仍然不起作用。同样的事情也会发生:它只显示数字。我认为在operations字段下面定义的字段product_名称没有显示出来。仅显示操作字段的值。我再次更新了我的问题,只是展示了我尝试过的另一种解决方案。这几乎就是我想要的,但它并没有显示所有的产品名称,只有一个。这些建议虽然很有见地,但并不能达到最终目的。如果你们中有人有一个实际的解决方案,请随时更新这篇文章,我也有同样的问题
<field name="product_name"/>
product_name = fields.Char(related='product_id.name', store=True)
<record model="ir.ui.view" id="mymodule.list">
<field name="name">MyModule list</field>
<field name="model">mymodule.mymodule</field>
<field name="arch" type="xml">
<field name="operations" widget="one2many_list">
<tree>
<field name="product_id" invisible="True"/>
<field name="product_name" />
</tree>
</field>
</field>