安装模块后,正常字段是否不会更新?

时间:2019-07-02 06:57:08

标签: odoo openerp-7

我正在OpenERP 8上开发一个模块。

这是一个非常简单的代码:它在python文件中只有一个新字段(或列),而在xml中只有一个xpath。我知道它能正常工作,因为曾经成功安装了它

当我尝试通过模块界面安装/更新模块时,有时将该字段添加/更新到OpenERP,但有时没有。

在安装模块之前和之后,我尝试启动/停止并重新启动Openerp,但我不知道它是否会带来后果。我的日志中没有错误或有用的东西。

因此字段不会添加/更新,而是每次都更新xml ...是否有人知道发生了什么情况以及解决方案?

python代码:

# -*- coding: utf-8 -*-
from openerp.osv import fields, osv

class StockPickingIn(osv.osv):
    _name = "stock.picking.in"
    _inherit = "stock.picking.in"

    _columns = {
        'adquat_ack_recep': fields.boolean('Accusé de réception'),
    }

xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>

        <record id="view_picking_in_form_adquat" model="ir.ui.view">
            <field name="name">stock.picking.in.form.adquat</field>
            <field name="model">stock.picking.in</field>
            <field name="inherit_id" ref="stock.view_picking_in_form"/>
            <field name="arch" type="xml">
                <xpath expr="//field[@name='stock_journal_id']" position="after">
                    <field name="adquat_ack_recep" />
                </xpath>
            </field>
        </record>

        <record id="view_picking_in_tree_adquat" model="ir.ui.view">
            <field name="name">stock.picking.in.tree.adquat</field>
            <field name="model">stock.picking.in</field>
            <field name="inherit_id" ref="stock.view_picking_in_tree"/>
            <field name="arch" type="xml">
                <xpath expr="//field[@name='state']" position="after">
                    <field name="adquat_ack_recep" />
                </xpath>
            </field>
        </record>

    </data>
</openerp>

我认为使用命令行-u更新字段是可行的!

但是我的其他问题没有解决:表单视图中没有空复选框

enter image description here

在表单视图中,我无法选中此复选框:

enter image description here 我单击“编辑”,然后检查并保存:该复选框恢复为空!

我在数据库中看到该值保存为true或false,但未在界面上显示

2 个答案:

答案 0 :(得分:1)

您应该看到以下错误

  
    

ValidateError

         

验证字段拱门时发生错误:View Architecture的XML无效!

  

由于adquat_ack_recep是在stock.picking中定义的,因此您将其添加为stock.picking.in形式。

您需要从stock.picking.in继承。

_inherit = "stock.picking.in"

编辑:

adquat_ack_recep字段添加到两个模型stock.pickingstock.picking.in中(重写stock.picking.in的读取方法以从stock.picking模型中读取值)。看看fields not saving problem

答案 1 :(得分:0)

由于两个实例同时运行,可能会出现问题。确保您运行单个实例。您也可以通过命令行更新模块,这可能会解决您的问题 请参阅此link来通过命令行更新模块。