为什么我得到 "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