我在OpenERP(Odoo)的sql_constaints中尝试使用花括号{}或方括号[]的两种不同方法。 两者都很好。 哪一个是正确的?
_sql_constraints = {
('email_uniq', 'unique(email)', ' Please enter Unique Email id.')
}
(或)
_sql_constraints = [
('email_uniq', 'unique(email)', ' Please enter Unique Email id.')
]
P.S:但是如果我想使用的不仅仅是一个约束,它只接受方括号[],就像这个例子一样。
_sql_constraints = [
('email_uniq', 'unique(email)', ' Please enter Unique Email id.'),
('contact_uniq', 'unique(contact)', ' Please enter Unique Mobile no.')
]
背后的原因是什么?
答案 0 :(得分:7)
正确的是方括号语法。
你可以在_sql_constraints
上查看并查看它是常用的,
在openerp/models.py
的ORM代码中,我们可以看到默认值为空列表:
_sql_constraints = []
#...
cls._local_sql_constraints = cls.__dict__.get('_sql_constraints', [])
定义在生成支持表时要执行的SQL约束的
(name, sql_definition, message)
三元组列表。
在python2中,您可以使用语法[]
获得list。
语法{}
要么创建:
{}
或者有如下键值:{'keyA': 'valueA', 'keyB': 'valueB'}
,{'value1', 'valueB', 42}
答案 1 :(得分:5)
在odoo中,sql约束的语法是(name, sql_definition, message)
的列表。例如
_sql_constraints = [
('name_uniq', 'unique(name)', 'Custom Warning Message'),
('contact_uniq', 'unique(contact)', 'Custom Warning Message')
]
你可以在元组列表中提供多个sql约束。
当你定义一个没有键和字母的词典时value python将其视为集合。并且设置可以是可用的。