如何在窗体视图中直接编辑多个字段?

2024-10-01 15:48:50 发布

您现在位置:Python中文网/ 问答频道 /正文

提前谢谢你。在

我拥有的:

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

我想做:

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

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

我做了什么:

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

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

我得到的:

表格: Form view

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

Item creation

我知道的:

我想我应该可以很容易地做出我想要的东西,但是我试着在我的视图中使用它,但是它没有起作用。在

我想知道的是:

如何使一个多个字段像在树视图中一样可编辑?也就是说,当我点击“addanitem”时,会添加一个空行,然后用户可以在表单视图中填充字段。在

如果可能的话,我如何使它能够为同一个特性设置多个值?在

代码:

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")

Tags: 模块nametruefieldsstringmodeltitlemodels
2条回答

按如下方式修改视图文件:

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

使类视图如下所示:

enter image description here

比我预想的要好。查看注释以查看推理。在

我不知道它是否行得通我需要一个与你想要的相反的one2many字段,因为one2many字段当你点击additem时会添加一个空行。在

在你看来

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

把o2m的行为改成m2m也行,希望对你也有用

编辑:

别忘了先让你的树状视图可编辑,它可以工作而不必更改小部件

^{pr2}$

我在打电话抱歉密码少了

编辑:

如果你没有找到一个简单的方法,你要做的是,many2many字段最终会在你的两个模型之间创建一个关系表,把这个关系创建为一个模型,然后把两个many2one字段放到你的模型中,把many2many字段改为one2many,这样你就可以像many2many那样做了。希望你能明白

相关问题 更多 >

    热门问题