我想设置来自潜在客户和联系人的电子邮件是唯一的.
我试图改变/usr/lib/python2.7/dist-packages/openerp/models.py文件,第342行:
_sql_constraints = []
在:
_sql_constraints = [
('user_email', 'unique(user_email)', 'Please enter Unique Email'),
]
但是没有用.
什么是正确的方法,请给我一个完整的例子,因为我是Odoo的初学者,谢谢.
解决方法:
您更改了BaseModel上的sql约束.系统中的所有模型都基于此模型.因此,此更改的效果是将约束添加到Odoo中的每个模型,其中大多数甚至没有user_email字段.结果可能是绝对灾难性的.您的Odoo尚未失败的唯一原因是您没有使用升级选项,因此目前更改尚未传播到数据库.
首先立即恢复更改.其次,你不应该直接改变Odoo源代码.首先,如果您开始修改Odoo的源代码,您将永远无法将其更新为更新的版本(即使使用安全更新),因为这会还原您的更改.
你应该做的是create a new module然后用它来扩展你想要修改的模块:
class Lead(models.Model):
_inherit = 'crm.lead'
_sql_constraints = [
('user_email', 'unique(user_email)', 'Please enter Unique Email'),
]
注意:在Odoo 8的早期版本中有a bug阻止通过扩展对象来改变sql约束.它现在已修复.确保您使用的是来自git的最新版本的Odoo.如果无法做到这一点,可能需要使用a work around.