【问题标题】:odoo server error after click on save button单击保存按钮后odoo服务器错误
【发布时间】:2019-12-17 12:07:11
【问题描述】:

当点击保存按钮给我屏幕截图中显示的 odoo 服务器错误 并在支持以下错误显示。

2019-12-14 12:36:25,426 4067 错误 work_span odoo.sql_db:错误查询: 插入“survey_page”(“id”、“create_uid”、“create_date”、 “write_uid”、“write_date”、“create_id_survey”、“sequence”、“title”) VALUES (nextval('survey_page_id_seq'), 1, (now() at time zone 'UTC'), 1, (now() at time zone 'UTC'), 1, 10, 'test1') 返回 id 错误: “survey_id”列中的空值违反非空约束细节: 失败行包含 (5, 1, test1, null, 10, null, 1, 2019-12-14 12:36:25.421912, 1, 2019-12-14 12:36:25.421912)。

更新 描述:我正在尝试以我创建自定义模型的一种形式显示调查标题、调查页面、调查问题。自定义模型继承survey.survey、survey.page、survey.question,还包含两个one2many字段。

以下是我的代码:

py 文件

class SurveyCreate(models.Model):

    _name = 'create.survey'

    _inherit = ['survey.survey','survey.page','survey.question']

    pages_id = fields.One2many('survey.page','create_id_survey','Pages')
    questions_survey = fields.One2many('survey.question','create_id_survey','Questions')
    survey_id = fields.Many2one('survey.survey', string='Survey',required=False) 
    page_id = fields.Many2one('survey.page', string='Survey page', required=False)

Xml 文件

            <sheet>

                <group>
                    <field name="title"/>
                </group>

                <group>
                    <field name="pages_id" mode="tree">
                        <tree editable="bottom">
                            <control>
                                <create string="Add page"/>
                            </control>
                            <field name="title"/>   
                            <field name="questions_id" widget="many2many_tags" context="{'tree_view_ref':'survey_inherit.survey_create_form','default_page_id':active_id}"/>                        
                        </tree>
                    </field>
                </group>
                <group> 
                    <field name="questions_survey" mode='tree'>         
                        <tree name="questions_tree" editable="bottom">
                            <control>
                                <create string="Add Question"/>
                            </control>
                            <field name="question"/>
                            <field name="type"/>
                        </tree>                 
                    </field>
                </group>

                <group>
                    <group>
                        <field name="question"/>
                   </group>

                   <group>
                        <field name="type"/>
                   </group>
                </group>            


            </sheet>
        </form>

根据@Atul 的建议进行更改,但出现相同的错误 如下截图 1.Form View 2.点击保存按钮后出错

【问题讨论】:

  • 错误很明显。您没有指定survey_id 的值,并且列不能为NULL
  • 请添加pages(one2many 字段)的定义以及如何用值填充它。

标签: odoo


【解决方案1】:

您似乎创建了一个自定义survey action 模型。并尝试将survey.page 用作one2manymany2many 字段。

当您添加页面并尝试保存记录时,它会阻止,因为在默认调查模块中,survey_id 字段是强制性的。您可以有两种方法来解决此问题。

  1. 继承survey.page 并覆盖该字段并使其成为非必需字段。

    survey_id = fields.Many2one('survey.survey', string='Survey', required=False)

  2. 默认填充survey_id的值(可以使用ir.config_parameter

希望这会有所帮助!

编辑:2019 年 12 月 19 日

如果您不需要在默认调查模式下更改任何内容,则无需从任何模型继承 create.survey

class SurveyCreate(models.Model):
    _name = 'create.survey'
    _inherit = ['survey.survey','survey.page','survey.question']

从您的班级中删除以下行。

_inherit = ['survey.survey','survey.page','survey.question']

改为为survey.page 创建一个新类并覆盖该字段

class SurveyPage(models.Model):
    _name = 'survey.page'

    survey_id = fields.Many2one('survey.survey', string='Survey', required=False)

【讨论】:

  • 根据您的建议,我继承了survey.page并覆盖了该字段。但问题没有解决
【解决方案2】:

看起来您为仅在One2many 字段中使用的模型创建了菜单/操作,因此该模型的表单视图未显示关系的反向字段 (survey_id)。在One2many 字段中不需要显示该字段,因为 Odoo 正在为它们做一些黑魔法。

因此,IMO 的最佳方式是为该模型创建您自己的表单视图。您还必须将此表单视图指定为菜单操作的默认视图。

【讨论】:

    猜你喜欢
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 2019-04-01
    相关资源
    最近更新 更多