创建新的自定义字段类型Odoo

时间:2019-02-04 07:38:53

标签: python-3.x odoo-11

我想使用现有字段类型创建自定义字段类型,就像Odoo一样具有字段类型:Char,Integer等。我想使用existindind整数字段类型创建新的Interger类型。因此,新的自定义字段类型具有现有功能和新功能。

Odoo允许创建自定义字段类型吗?如果是,那么如何创建自定义字段类型?

我想继承现有字段类型可以像创建使用继承现有模型的自定义模块一样创建自定义字段类型。

谢谢

1 个答案:

答案 0 :(得分:0)

是的,Odoo允许创建自定义字段类型。从概念上讲,您将需要执行以下步骤:

  1. 在您的javascript中实现Odoo AbstractField的子类。
odoo.define('my_module.fields', function(require) {
"use strict"

var registry = require('web.field_registry');
var AbstractField = require('web.AbstractField'); 
var CustomField = AbstractField.extend({

    /**
     * @override
     */    
    _renderReadonly: function () {
       //...
    }
});

// add the custom widget to Odoo's widget registry
registry.add('my_custom_field', CustomField);
})

您可能不需要直接扩展AbstractField,因为已经有许多内置字段小部件可以满足您的需要。我建议您获取Odoo的源代码,并在addons/web/static/src/js/fields/basic_fields.js下浏览不同的字段小部件实现,以找到最适合您的需求。然后从那里延伸。

  1. 让Odoo知道它应该使用xml中的自定义小部件
<field name="content" widget="my_custom_field" /> 

您可以在我发现的example blog post中查找更多信息。