OdooWiki OCA HUB

Base Custom Info

base_custom_info folder_open OCA/server-tools open_in_new
Tools License: LGPL-3

This module allows you to attach custom information to records without the need to alter the database structure too much.

This module defines several concepts that you have to understand.

Templates

A template is a collection of properties that a record should have. Templates always apply to a given model, and then you can choose among the current templates for the model you are using when you edit a record of that model.

I.e., This addon includes a demo template called "Smart partners", that applies to the model res.partner, so if you edit any partner, you can choose that template and get its properties autofilled.

Properties

A property is the "name" of the field. Templates can have any amount of properties, and when you apply a template to a record, it automatically gets all of its properties filled, empty (unless they have a Default value), ready to assign values.

You can set a property to as required to force it have a value, although you should keep in mind that for yes/no properties, this would mean that only yes can be selected, and for numeric properties, zero would be forbidden.

Also you can set Minimum and Maximum limits for every property, but those limits are only used when the data type is text (to constrain its length) or number. To skip this constraint, just set a maximum smaller than the minimum.

Properties always belong to a template, and as such, to a model.

Properties define the data type (text, number, yes/no...), and when the type is "Selection", then you can define what options are available.

I.e., the "Smart partners" template has the following properties:

  • Name of his/her teacher
  • Amount of people that hates him/her for being so smart
  • Average note on all subjects
  • Does he/she believe he/she is the smartest person on earth?
  • What weaknesses does he/she have?

When you set that template to any partner, you will then be able to fill these properties with values.

Categories

Properties can also belong to a category, which allows you to sort them in a logical way, and makes further development easier.

For example, the website_sale_custom_info addon uses these to display a technical datasheet per product in your online shop, sorted and separated by category.

You are not required to give a category to every property.

Options

When a property's type is "Selection", then you define the options available, so the value must be one of these options.

I.e., the "What weaknesses does he/she have?" property has some options:

  • Loves junk food
  • Needs videogames
  • Huge glasses

The value will always be one of these.

Value

When you assign a template to a partner, and then you get the properties it should have, you still have to set a value for each property.

Values can be of different types (whole numbers, constrained selection, booleans...), depending on how the property was defined. However, there is always the value field, that is a text string, and converts automatically to/from the correct type.

Why would I need this?

Imagine you have some partners that are foreign, and that for those partners you need some extra information that is not needed for others, and you do not want to fill the partners model with a lot of fields that will be empty most of the time.

In this case, you could define a template called "Foreign partners", which will be applied to res.partner objects, and defines some properties that these are expected to have.

Then you could assign that template to a partner, and automatically you will get a subtable of all the properties it should have, with tools to fill their values correctly.

Does this work with any model?

Yes and no.

Yes, because this is a base module that provides the tools to make this work with any model.

No, because, although the tools are provided, they are only applied to the res.partner model. This is by design, because different models can have different needs, and we don't want to depend on every possible model.

So, if you want to apply this to other models, you will have to develop a little additional addon that depends on this one. If you are a developer, refer to the Development section below.

auto_awesome What this module does

AI-generated from the code · Odoo 15.0

Lets you add extra fields to any Odoo record without changing the database, by defining templates of properties and filling in values on records such as partners.

This module adds a flexible way to store extra information on records without creating new database columns. You first define templates, which are groups of properties that apply to a chosen model (for example, contacts). Each property has a name, a type (text, whole number, decimal number, yes/no, date or selection), and can be organised into categories.

  • In the Custom Info menu you get Basic and Advanced sections. Basic holds Templates and Values; Advanced holds Categories, Properties and Options.
  • On a record that supports custom info (partners are included), you pick a template and Odoo automatically adds the matching properties as empty lines, pre-filled with any default value you set.
  • Properties can be marked as required, and you can set minimum and maximum limits for text length or numeric values; Odoo blocks saving when a value is missing or out of range.
  • Selection properties use options, and choosing an option can automatically apply an additional template to the record.
  • A template's model cannot be changed once values already exist for it.
  • Access to templates, properties, options and values follows the access rights of the linked model or owner record.
  • Settings let administrators allow all employees to manage custom information and add a tab for editing custom information on partners.

Depends on

base_setup

Menus it adds

Custom InfoBasicAdvancedmenu_base_custom_info_templatemenu_base_custom_info_valuemenu_categorymenu_propertymenu_option
Models and fields (10)
  • ir.ui.view · extends an existing modeltype
  • custom.info · new modelcustom_info_ids (Custom Properties), custom_info_template_id (Custom Information Template)
  • res.partner · new modelcustom_info_ids, custom_info_template_id
  • custom.info.value · new modelname, model, value, res_id (Resource ID), widget, owner_id (Owner), required, value_id (Selection value), value_int (Whole number value), value_str (Text value), field_name, field_type, value_bool (Yes/No value), value_date (Date value), category_id, property_id (Property), value_float (Decimal number value), category_sequence (Category Sequence), property_sequence
  • custom.info.option · new modelname, value_ids (Values), template_id (Additional template), property_ids (Properties)
  • res.config.settings · extends an existing modelgroup_custom_info_manager (Manage custom information), group_custom_info_partner (Edit custom information in partners)
  • custom.info.category · new modelname, sequence, property_ids (Properties)
  • custom.info.property · new modelname, model, widget, maximum, minimum, required, sequence, field_type, option_ids (Options), category_id (Category), template_id (Template), default_value, info_value_ids (Property Values), category_sequence (Category Sequence)
  • custom.info.template · new modelname, model (Model technical name), model_id (Model), property_ids (Properties)
  • ir.actions.act_window.view · extends an existing modelview_mode

Text generated by AI (DeepSeek) from reading the Odoo 15.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 4 confirmed, 5 with no information of 9 versions.

Sources · Odoo 13.0

Confirmed on 2026-11-03 in branch 13.0 of OCA/server-tools.

terminal Installation and usage

OCA documentation · Odoo 15.0

This module serves as a base for other modules that implement this behavior in concrete models.

This module is a technical dependency and is to be installed in parallel to other modules.

To enable the main Custom Info menu:

  • Enable Settings > General Settings > Manage custom information.

To enable partner's custom info tab:

  • Enable Settings > General Settings > Edit custom information in partners.

This module defines Custom Info Templates that define what properties are expected for a given record.

To define a template, you need to:

  • Go to Custom Info > Templates.
  • Create one.
  • Add some Properties to it.

All database records with that template enabled will automatically fill those properties.

To manage the properties, you need to:

  • Go to Custom Info > Properties.

To manage the property categories, you need to:

  • Go to Custom Info > Categories.

Some properties can have a number of options to choose, to manage them:

  • Go to Custom Info > Options.

To manage their values, you need to:

  • Go to Custom Info > Values.
info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.