python – Odoo v8中的唯一电子邮件字段

我想设置来自潜在客户和联系人的电子邮件是唯一的.

我试图改变/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.

点赞