我如何才能 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
!):
- 使用 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
- 使用相关字段
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")
我想要的是,一旦我选择了第一个字段,与此选择相关的字段就有了它们的值
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
!):
- 使用 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
- 使用相关字段
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")