如何在表单视图中直接编辑Many2many字段?

时间:2017-09-13 16:21:44

标签: python openerp odoo-10

提前谢谢。

我有什么:

  • 包含值列表及其描述的模块。
  • 包含功能列表及其说明的模块。

我想:

一个类模块,用户可以在表格中将一个特征与值配对。

最终目标实际上是在同一行中具有该功能的所有值和功能。我不介意我每行只获得一个值,并且需要为每个值输入相同的特征倍数。

我做了什么:

  • 制作一个时间模块,其中我有两个多个变量,每个变量一个(一个用于特征,另一个用于值)

  • 在我的课程模块中创建一个many2many字段并显示它。

我得到了什么:

表格: Form view

当我点击“添加项目”时:

Item creation

我所知道的:

我想我应该能够轻松地制作我想要的东西,但我试图在我的视图中使用它并不起作用。

我想知道的事情:

如何使many2many字段可编辑,就好像它在树视图中一样?也就是说,当我点击“添加项目”时,会添加一个空行,然后用户可以在停留在表单视图上时填充这些字段。

如果可能的话,我该怎么做才能为同一个功能设置几个值?

代码:

class Classes(models.Model):
    _name = 'sync2ba.etim.classes'
    name                    = fields.Char(string="Title", required=True)
    code                    = fields.Char(stCharring="Code")
    version                 = fields.Integer(string="Version")
    description             = fields.Char(string="Description")
    featurecode             = fields.Char(string="FeatureCode")
    status                  = fields.Char(string="Status")
    groupcode               = fields.Char(string="GroupCode")
    relationships           = fields.Many2many("sync2ba.etim.relationships", string="Features")

class Relationships(models.Model):
    _name = 'sync2ba.etim.relationships'
    name                    = fields.Char(string="Title", required=True)
    relationships_features  = fields.Many2one("sync2ba.etim.features", ondelete='set null', string="relationships_features", index=True)
    relationships_value     = fields.Many2one("sync2ba.etim.values", ondelete='set null', string="relationships_value", index=True)

class Features(models.Model):
    _name = 'sync2ba.etim.features'
    name                    = fields.Char(string="Title", required=True)
    code                    = fields.Char(string="Code")
    description             = fields.Char(string="Description")
    type                    = fields.Char(string="Type")

class Values(models.Model):
    _name = 'sync2ba.etim.values'
    name                    = fields.Char(string="Title", required=True)
    code                    = fields.Char(string="Code")
    description             = fields.Char(string="Description")

2 个答案:

答案 0 :(得分:1)

我不知道它是否会起作用我需要你想要的one2many字段的反转,因为当你点击添加项目时,添加一个空行的one2many字段。

在你看来

           <field name="your_m2m_field" widget="one2many" />

为了将o2m的行为改为m2m,希望它也适合你

编辑:

不要忘记首先使树视图可编辑,它可以工作而不必更改小部件

        <field name="your_m2m_field" >
                <tree editable="bottom">
                        your list of fields here

我在手机上抱歉少了代码

编辑:

如果你没有找到一个简单的方法来做你需要做的就是many2many字段最终它会在你的两个模型之间创建一个关系表,只需创建这个关系作为模型并将两个many2one字段放到你的模型中将many2many字段更改为one2many到新模型,这样你就做了很多很多人做的事情。希望你明白这个想法

答案 1 :(得分:0)

修改视图文件,如下所示:

<label for="relationships"/>
<field name="relationships" widget="one2many">
    <tree editable="bottom">
        <field name="relationships_features"/>
        <field name="relationships_value"/>
    </tree>
</field>

使Classes视图看起来像这样:

enter image description here

这比我预期的要好。检查评论以查看推理。