>问题
我有以下模型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')]