感谢这个网站上聪明人的帮助,我现在在我的模块中有一个很好的One2many字段,允许我添加多个订单行,就像在销售模块中一样。它工作得很好,但为了方便起见,我希望能够在我的树和日历视图中的One2many字段中看到某个字段。但是,当我尝试使用下面描述的方法显示该字段时,我得到的只是记录数。特别是,我希望它显示添加到订单行的所有产品。以下是相关代码:
models.py
# -*- 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>
以下是使用上述代码查看我的列表视图的图片:List View
我非常感谢任何帮助。如果我需要进一步澄清我想要做的事情,请告诉我。
修改 我已经尝试了Juan的建议,但在我看来,我仍然只看到数字,而不是产品名称。这就是我做的。我不确定我是否正确遵循了说明。
在mymodule.line下
product_name = fields.Char(related='product_id.name', store=True)
在列表视图下
<field name="operations" widget="one2many_list" mode="tree">
<field name="product_id" invisible="True"/>
<field name="product_name"/>
</field>
在操作定义下是否包含这两行似乎并不重要。
<field name="product_id" invisible="True"/>
<field name="product_name"/>
我仍然得到相同的结果。
编辑2 我试过在mymodule.mymodule下添加一个相关字段:
product_name = fields.Char(related='operations.product_id.name')
然后,我在列表视图中定义了这个字段,如下所示:
<field name="product_name"/>
这给了我几乎我想要的东西,除了它只显示一个产品的名称,而不是所有产品。
答案 0 :(得分:2)
您是否尝试为widget="one2many_list"
字段添加正确的operations
?比如发票行LINK。我希望这可以帮到你。
编辑:
使用One2many相关字段,文档说:
模式
One2many ,显示模式(视图类型),用于字段的链接记录。其中一个树,表单,看板或图表。默认为树(列表显示)
首先,在窗口小部件定义旁边添加模式属性,然后设置您要查找的模式。 其次,要获取产品的名称,您应该在mymodule.line&#39;中创建一个相关的字段,如下所示:
product_name = fields.Char(related='product_id.name', store=True)
修改您的观点,设置 product_id invisible="true"
,然后添加<field name="product_name"/>
警告:请勿在视图中避开 product_id 定义,因为相关字段无法正常工作
有关相关字段HERE的信息。
编辑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>
对于您的日历视图,请遵循相同的结构。