我有一个包含四个字段的表单:
- 裁剪 - 选择
- 活动开始日期
- 活动至今
- 块区域 - 选择
如何使块区域中的可用选项取决于用户为其他字段选择的值?
我不知道您是否可以使用选择字段来做到这一点,但是当另一个字段更改值时,您可以更改多对一字段的域。您也可以只使用 BlockArea 字段域中的其他字段,而根本不必更改它。查看合作伙伴地址屏幕为 state_id 字段设置域的方式。您可能会发现这个相关问题很有帮助。
如果在另一个字段更改时确实需要更改域,则事件on_change
可以在它返回的字典中包含一个domain
条目。
我发现一个讨论线程说您可以在多对一字段上使用选择小部件,因此如果您domain
为该字段设置 a 可能对您有用。我自己没试过。
尝试 on_change 函数.. 创建一个 on_change 函数并在函数末尾返回字段 block_area 的域条件,例如
def onchange_for_block_area(self,cr,uid,ids,crop,from_date,to_date,context):
domain=[]
#
#some statements for finding the domain
#
return {'domain':{'block_area': domain}}
在字段crop、from_date和to_date上提供onchange函数
要根据其他字段值限制可用选项,您可以使用domain
. 例如,这用于标准模块project_issue
:
引用相关行:
class project_issue(crm.crm_case, osv.osv):
_columns = {
'project_id':fields.many2one('project.project', 'Project'),
'type_id': fields.many2one ('project.task.type', 'Stages', domain="[('project_ids', '=', project_id)]"),
}
在此示例中,type_id
可用选项是从project.task.type
表中获取的,具体取决于project_id
字段的值。