SQL 约束未在 Odoo 11 中运行



>问题

我有以下模型myModel

# -*- coding: utf-8 -*-
from odoo import models, fields, api
class myModel(models.Model):
_name = 'myproject.myModel'
name= fields.Char('Name', size=9, required=True)
startDate = fields.Datetime('Start date',required=True)
endDate= fields.Datetime('End date',required=True)
_sql_constraints = [('date_constraint', 'CHECK((endDate > startDate))', 'End date must be later than start date')]

问题是sql约束没有产生任何作用。我试过:

  • 不使用演示数据。
  • 更新模块
  • 完全重启Odoo(包括postgresql(
  • 使用新数据库
  • 我也尝试了其他_sql_constraints,例如:_sql_constraints = [('name_constraint', 'UNIQUE((name))', 'Name must be unique.')]

溶液

问题是该字段包含大写,似乎 sql_constraint将所有内容转换为小写,因此该字段是 在数据库中找不到。所以我将开始日期转换为开始日期和 结束日期到结束日期。

欢迎!感谢您发布包含所有所需详细信息的好问题。😁

您需要更新插件。

如果仍然不起作用,请检查日志。如果任何预先存在的记录违反 SQL 约束,Odod 将无法安装 SQL 约束。在这种情况下,它将记录警告。删除或修复该记录,然后再次升级模块。

避免更改字段名称的另一种可能的解决方案,"字段名称,我在"唯一"情况下进行了测试

_sql_constraints = [('date_constraint', 'CHECK(("endDate" > "startDate"))', 'End date must be later than start date')]

最新更新