Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Odoo 10-标准树和日历视图中One2many的显示字段_Python_Xml_Openerp_Odoo 10 - Fatal编程技术网

Python Odoo 10-标准树和日历视图中One2many的显示字段

Python 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

多亏了这个网站上聪明人的帮助,我现在在我的模块中有了一个很好的One2many字段,可以像在销售模块中一样添加多个订单行。它工作得很好,但现在为了方便起见,我希望能够在我的树和日历视图中的任何字段中看到One2many中的某个字段。但是,当我尝试使用下面描述的方法显示该字段时,我得到的只是记录数。特别是,我希望它显示添加到订单行的所有产品。以下是相关代码:

型号.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>
在列表视图下

            <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)
并修改视图,以设置产品id
invisible=“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>