为什么我得到 "Error while validating constraint None"?
Why am I getting "Error while validating constraint None"?
我正在为 Odoo 12 开发一个新模块。我制作了相应的向导,我知道它没问题,因为我在此处之前安装该模块没有任何问题。
但是,现在我为这个模型制作了视图(它是一个向导形式),但是当我尝试更新模型时,我的电脑变慢了,odoo 服务(自行关闭)并在几分钟后它显示以下内容:
odoo.tools.convert.ParseError: "Error mientras se validaban las
restricciones
None" while parsing
/opt/odoo/odoo12-custom-addons/opens_annual_opening_seat/wizards/wizard_opening_seat.xml:3,
near
create.openning.seat.wizard
wizard.openning.seat
如果我在清单中注释导入此 xml 的行,并尝试再次更新,它会起作用。所以问题出在这个xml.
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="generate_openning_seat_form" model="ir.ui.view">
<field name="name">create.openning.seat.wizard</field>
<field name="model">wizard.openning.seat</field>
<field name="arch" type="xml">
<form string="Close period">
<group>
<field name="year" required="1"/>
</group>
<footer>
<button name="generate_seat" string="Create seat" type="object" class="btn-primary"/>
</footer>
</form>
</field>
</record>
<record id="closing_periods_form" model="ir.actions.act_window">
<field name="name">Period closing</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">wizard.openning.seat</field>
<field name="view_mode">form</field>
<field name="view_id" ref="generate_openning_seat_form"/>
<field name="target">new</field>
</record>
<menuitem id="menu_closing_period" name="Consultor" parent="account.menu_finance" sequence="35"/>
<menuitem id="close_period" name="Closing period" parent="menu_closing_period"
action="closing_periods_form" sequence="40"/>
</odoo>
我的模型是这样定义的:
# -*- coding: utf-8 -*-
from odoo import api, fields, models
from datetime import date, datetime, time, timedelta
class OpenAnnualSeatWizard(models.Model):
_name = 'wizard.openning.seat'
@api.model
def year_selection(self):
date = datetime.now().strftime("%Y")
year = int(date) - 1
year_list = []
while year != year+1:
year_list.append((str(year), str(year)))
year += 1
return year_list
year = fields.Selection(year_selection, string='Año', default='2020')
@api.multi
def generate_seat(self):
# code
额外信息:
- 是的,我在清单文件中导入了帐户模块。
- 是的,我已经检查过模型已创建。
- 是的,我检查过文件中的模型名称是否正确写入。
你在计算选择的函数中有一个无限循环。
表达式:
year != year+1
将始终是 True
并且 Odoo 将进入一个没有中断条件的无限 while 循环。
使用 year
属性获取整数形式的 date
年份。
current_year = datetime.now().year
我正在为 Odoo 12 开发一个新模块。我制作了相应的向导,我知道它没问题,因为我在此处之前安装该模块没有任何问题。
但是,现在我为这个模型制作了视图(它是一个向导形式),但是当我尝试更新模型时,我的电脑变慢了,odoo 服务(自行关闭)并在几分钟后它显示以下内容:
odoo.tools.convert.ParseError: "Error mientras se validaban las restricciones
None" while parsing /opt/odoo/odoo12-custom-addons/opens_annual_opening_seat/wizards/wizard_opening_seat.xml:3, near create.openning.seat.wizard wizard.openning.seat
如果我在清单中注释导入此 xml 的行,并尝试再次更新,它会起作用。所以问题出在这个xml.
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="generate_openning_seat_form" model="ir.ui.view">
<field name="name">create.openning.seat.wizard</field>
<field name="model">wizard.openning.seat</field>
<field name="arch" type="xml">
<form string="Close period">
<group>
<field name="year" required="1"/>
</group>
<footer>
<button name="generate_seat" string="Create seat" type="object" class="btn-primary"/>
</footer>
</form>
</field>
</record>
<record id="closing_periods_form" model="ir.actions.act_window">
<field name="name">Period closing</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">wizard.openning.seat</field>
<field name="view_mode">form</field>
<field name="view_id" ref="generate_openning_seat_form"/>
<field name="target">new</field>
</record>
<menuitem id="menu_closing_period" name="Consultor" parent="account.menu_finance" sequence="35"/>
<menuitem id="close_period" name="Closing period" parent="menu_closing_period"
action="closing_periods_form" sequence="40"/>
</odoo>
我的模型是这样定义的:
# -*- coding: utf-8 -*-
from odoo import api, fields, models
from datetime import date, datetime, time, timedelta
class OpenAnnualSeatWizard(models.Model):
_name = 'wizard.openning.seat'
@api.model
def year_selection(self):
date = datetime.now().strftime("%Y")
year = int(date) - 1
year_list = []
while year != year+1:
year_list.append((str(year), str(year)))
year += 1
return year_list
year = fields.Selection(year_selection, string='Año', default='2020')
@api.multi
def generate_seat(self):
# code
额外信息:
- 是的,我在清单文件中导入了帐户模块。
- 是的,我已经检查过模型已创建。
- 是的,我检查过文件中的模型名称是否正确写入。
你在计算选择的函数中有一个无限循环。
表达式:
year != year+1
将始终是 True
并且 Odoo 将进入一个没有中断条件的无限 while 循环。
使用 year
属性获取整数形式的 date
年份。
current_year = datetime.now().year