4

我有一个包含四个字段的表单:

  • 裁剪 - 选择
  • 活动开始日期
  • 活动至今
  • 块区域 - 选择

如何使块区域中的可用选项取决于用户为其他字段选择的值?

4

3 回答 3

3

我不知道您是否可以使用选择字段来做到这一点,但是当另一个字段更改值时,您可以更改多对一字段的域。您也可以只使用 BlockArea 字段域中的其他字段,而根本不必更改它。查看合作伙伴地址屏幕为 state_id 字段设置域的方式。您可能会发现这个相关问题很有帮助。

如果在另一个字段更改时确实需要更改域,则事件on_change可以在它返回的字典中包含一个domain条目。

我发现一个讨论线程说您可以在多对一字段上使用选择小部件,因此如果您domain为该字段设置 a 可能对您有用。我自己没试过。

于 2011-11-30T22:32:59.953 回答
1

尝试 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函数

于 2012-04-28T10:57:15.443 回答
1

要根据其他字段值限制可用选项,您可以使用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字段的值。

于 2012-01-31T22:01:58.987 回答