class Model1(models.Model):
name = fields.Char(string="Name")
one_1 = fields.One2many('Model2', 'field_many', string="")
one_2 = fields.One2many('Model3', 'field_many2', string="")
one_3 = fields.One2many('Model4', 'field_many3', string="")
这些是One2many
领域称为模型:我需要总结field_float1
class Model2(models.Model):
field_many = fields.Many2one('Model1', string="")
field_float1 = fields.Float()
class Model3(models.Model):
field_many2 = fields.Many2one('Model1', string="")
field_float2 = fields.Float()
class Model4(models.Model):
field_many3 = fields.Many2one('Model1', string="")
field_float3 = fields.Float()
和field_float2
,并在field_float3
上显示结果,但问题是,或者让我困惑的是,这个总和不仅仅是同一模型中的总和。
我可以这样做:
@api.onchange('field_float1', 'field_float2')
def _compute_amount_move_sales_current(self):
if self.field_float1 or self.field_float2:
self.field_float3 = self.field_float1 + self.field_float2
但这些都是从两个模型,结果必须在第三个模型场反映领域,此外,这些车型都派代表参加01形式,通过3 One2many
树视图,或因为它们通常被称为Odoo。
因此,它只是要读取前两个字段,但它必须在形式Model1
这将创建新的记录。不是数据库表。
编辑
这是一个更精确的解释,用户创建这些线或One2many
领域,在所有情况下,前两个必须填写一个新的记录,所以我认为可以用required=True
实现国旗在领域。 不过,我已经试过这样:
class Model1(models.Model):
name = fields.Char(string="Name")
one_1 = fields.One2many('Model2', 'field_many', string="")
one_2 = fields.One2many('Model3', 'field_many2', string="")
one_3 = fields.One2many('Model4', 'field_many3', string="", onchange="compute_sum")
@api.onchange('one_1', 'one_2')
def compute_sum(self):
if self.one_1.field_float1 or self.one_2.field_float2:
self.one_3.field_float3 = self.one_1.field_float1 + self.one_2.field_float2
但它不工作,当我填表的field_float它需要一个说:
ValueError
Expected singleton: Model4()
为进一步说明,该模型的样子这样的:
class Model2(models.Model):
field_many = fields.Many2one('Model1', string="")
field_float1 = fields.Float()
field_float_ = fields.Float()
field_integer = fields.Integer()
field_char = fields.Char()
class Model3(models.Model):
field_many2 = fields.Many2one('Model1', string="")
field_float2 = fields.Float()
integer = fields.Integer()
class Model4(models.Model):
field_many3 = fields.Many2one('Model1', string="")
field_float3 = fields.Float()
chars = fields.Char()
bool = fields.Boolean()
我的意思是,有每个这些模型,这是从Model1
调用One2many
领域的多个领域,只是那些花车需要操作,而不是每一个。
并且用户将按顺序填充这些字段,按照state
的形式,按照statusbar
等顺序填充。
非常感谢你,一定要尝试做一些测试 – NeoVe
嗨,但现在所有的线是只读的,我的意思是,我在示例中只使用了一个字段,因为它是一个示例,它在某种程度上就是这样,但是此One2many上还有一些其他字段不应该计算,这就是我认为的问题 – NeoVe
想象一下我的例如,其他两个领域本身不应该计算,Idk如果我应该编辑我的问题,我认为,只有在'one_3'字面上有一个字段时才解决您的问题 – NeoVe