我如何才能 select 一个字段其他字段有值?

how can I once I select a field the other fields have values?

我想要的是,一旦我选择了第一个字段,与此选择相关的字段就有了它们的值

    nameTest = fields.Many2one(
        comodel_name='medical.lab.patient',
        required=True,
    )

nameTest 是一个对象,我如何访问与该对象相关的字段?

使用

@api.onchange(put_your_fields_here)
def onchange_custom(self):

return {'value': {'field_1': value1, 'field_2': value_2)}

你需要的是相关领域:

假设有model.one

 _name = 'model.one'

 field_1 = fields.Char(..)
 field_2 = fields.Date(..)

和模型 model.two 具有 one2many 字段 model.one

_name = 'model.two'

 many2one_field = fields.Many2one(co_model='model.one', ....)
 # just add related field two use them in the view.
 # here I chosed to give them the same name 
 # if you don't specify any attribute like string , required ....
 # they inherit the attributes of the model.one fields
 field_1 = fields.Char(related='many2one_field.field_1',
                        readonly=True)
 field_2 = fields.Date(related='many2one_field.field_2',
                        readonly=True)

当你 select many2one 字段时,相关字段像代理或计算字段一样工作 那里的价值会自动改变。

如果你只想用相关字段的值填充字段 创建 onchange 事件

   @api.onchange('many2one_field')
   def onchange_many2OneField(self):
        # first check many2one field have value
        if self.many2one_field:
            self.field_1 = self.many2one_field.some_field_1
            self.field_2 = self.many2one_field.some_field_2
        else:
            # make them all False if it what you want
            self.field_1 = False
            self.field_2 = False

这里有 2 个选项(我在示例中将 nameTest 更改为 my_many2one_id!):

  1. 使用 onchange 行为
class MyModel(models.Model):
    _name = 'my.model'

    my_many2one_id = fields.Many2one(
        comodel_name='medical.lab.patient',
        required=True
    )
    my_field1 = fields.Boolean(string="My Field1")
    my_field2 = fields.Char(string="My Field2")

    @api.onchange('my_many2one_id')
    def onchange_my_many2one_id(self):
        self.my_field1 = self.my_many2one_id.my_field1
        self.my_field2 = self.my_many2one_id.my_field2
  1. 使用相关字段
    my_field3 = fields.Boolean(
        string="My Field3", related="my_many2one_id.my_other_field3")
    my_field4 = fields.Char(
        string="My Field4", related="my_many2one_id.my_other_field4")