基于状态字段要求布尔字段

1 投票
1 回答
1830 浏览
提问于 2025-04-18 05:33

我正在尝试根据一个字段的选择(也就是“状态字段”)来制作一个布尔字段的列表,这些布尔字段是required

但是,即使我选择了Lotissement并勾选了布尔字段,OpenERP还是告诉我这个布尔字段是必填的,根本不想保存这个表单。

我试过这个代码:

def _get_selection(self, cursor, user_id, context=None):
    return (('i', 'Construction Immeuble'),
            ('d', 'Démolition'),
            ('l', 'Lotissement'),
            ('m', 'Morcelement'),
            ('v','Construction Villa')
           ) 

_columns = {
        'state': fields.selection(_get_selection, 'Type de la demande', required=False),
        'active0': fields.boolean('Plan de situation en coordonnées Lambert', 
                          required= False, states={'l':[('required',True)]}),
        'active1': fields.boolean('Plan de masse et terrasse',
                          required= False, states={'l':[('required',True)]}),
        'active2': fields.boolean('Plan des différents niveaux',
                          required= False, states={'l':[('required',True)]}),
        'active3': fields.boolean('Deux coupes',required= False,
                          states={'l':[('required',True)]}),
        'active4': fields.boolean('Plan des façades'),
        'active5': fields.boolean('Demande avec engagement',
                          required= False, states={'l':[('required',True)]}),
        'active6': fields.boolean('Fiche de statistique',
                          required= False, states={'l':[('required',True)]}),
        'active7': fields.boolean('Contrat d’architecte',
                          required= False, states={'l':[('required',True)]}),
        'active8': fields.boolean('Certificat de propriété',
                          required= False, states={'l':[('required',True)]}),
        'active9': fields.boolean('Plan cadastral',
                          required= False, states={'l':[('required',True)]}),
}

1 个回答

1

这句话不太合理,因为布尔值默认是假的,所以用户输入总是有效的(浮点数或整数也是这种情况)。
但在这种情况下,openERP 有个 bug,它期望的是 True 的值。

我觉得你应该使用选择类型!

另外:
如果你想在视图中定义必填字段,你应该在定义视图的时候在 xml 文件里做这件事!
例如:

<!-- Simple field-->
<field name='example' />
<!-- Required field (variations on a theme) -->
<field name='example' required="1" />
<field name='example' attrs="{'required': True}" />

撰写回答