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

Ek *_*mos 3 python unique-constraint openerp-8 odoo odoo-8

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

我试图改变/usr/lib/python2.7/dist-packages/openerp/models.py文件,第342行:

_sql_constraints = []
Run Code Online (Sandbox Code Playgroud)

在:

_sql_constraints = [
        ('user_email', 'unique(user_email)', 'Please enter Unique Email'),
]
Run Code Online (Sandbox Code Playgroud)

但是没有用.

什么是正确的方法,请给我一个完整的例子,因为我是Odoo的初学者,谢谢.

Lud*_*mer 7

你改变了sql约束BaseModel.系统中的所有模型都基于此模型.因此,这种变化的效果是将约束添加到Odoo中的每个模型,其中大多数甚至没有user_email字段.结果可能是绝对灾难性的.您的Odoo尚未失败的唯一原因是您没有使用升级选项,因此目前更改尚未传播到数据库.

首先立即恢复更改.其次,你不应该直接改变Odoo源代码.首先,如果您开始修改Odoo的源代码,您将永远无法将其更新为更新的版本(即使使用安全更新),因为这会还原您的更改.

你应该做的是创建一个新模块,然后用它来扩展你想要修改的模块:

class Lead(models.Model):
    _inherit = 'crm.lead'

    _sql_constraints = [
            ('user_email', 'unique(user_email)', 'Please enter Unique Email'),
    ]
Run Code Online (Sandbox Code Playgroud)

注意:早期版本的Odoo 8中存在一个错误,阻止通过扩展对象来更改sql约束.它现在已修复.确保您使用的是来自git的最新版本的Odoo.如果无法做到这一点,可能需要使用解决方法.