ir.ui.view: fields, relations and API
The ir.ui.view model ("View") is a persistent model declared by the Base module, then extended by 7 other modules. It exposes 43 fields, 31 of them declared directly on the model; 22 fields from other models point to it. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 19 JSON-2 API call.
Model identity
- Technical name
ir.ui.view- Label
- View
- Type
- Persistent (models.Model)
- SQL table
ir_ui_view- Origin module
- Base (
base) - Extended by
- web, html_editor, mail, portal, base_import_module, web_hierarchy, website
- Default order (_order)
priority,name,id- Inherits from (mixins)
- website.seo.metadata
Model fields
31 own fields, 6 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.
43 of 43 fields shown
| Technical name | Label | Type | Details |
|---|---|---|---|
| active | Active If this view is inherited, * if True, the view always extends its parent * if False, the view currently does not extend its parent but can be enabled | boolean | |
| arch | View Architecture This field should be used when accessing view arch. It will use translation. Note that it will read `arch_db` or `arch_fs` if in dev-xml mode. | text | computed |
| arch_base | Base View Architecture This field is the same as `arch` field without translations | text | computed |
| arch_db | Arch Blob This field stores the view arch. | text | |
| arch_fs | Arch Filename File from where the view originates. Useful to (hard) reset broken views or to read arch from file in dev-xml mode. | char | |
| arch_prev | Previous View Architecture This field will save the current `arch_db` before writing on it. Useful to (soft) reset a broken view. | text | |
| arch_updated | Modified Architecture | boolean | |
| controller_page_ids | Controller Page | one2many | inverse: added by Website ( |
| customize_show | Show As Optional Inherit | boolean | added by Customer Portal ( |
| first_page_id | Website Page First page linked to this view | many2one | computed added by Website ( |
| group_ids | Groups If this field is empty, the view applies to all users. Otherwise, the view applies to the users of those groups only. | many2many | |
| inherit_children_ids | Views which inherit from this one | one2many | inverse: |
| inherit_id | Inherited View | many2one | |
| invalid_locators | Invalid Locators | json | computed |
| key | Key | char | |
| mode | View inheritance mode Only applies if this view inherits from an other one (inherit_id is not False/Null). * if extension (default), if this view is requested the closest primary view is looked up (via inherit_id), then all views inheriting from it with this view's model are applied * if primary, the closest primary view is fully resolved (even if it uses a different model than this one), then this view's inheritance specs (<xpath/>) are applied, and the result is used as if it were this view's actual arch. | selection | required Values: |
| model | Model | char | |
| model_data_id | Model Data | many2one | computed |
| model_id | Model of the view | many2one→ ir.model | computed |
| name | View Name | char | required |
| page_ids | Page | one2many | inverse: added by Website ( |
| priority | Sequence | integer | required |
| theme_template_id | Theme Template | many2one | added by Website ( |
| track | Track Allow to specify for one page of the website to be trackable or not | boolean | added by Website ( |
| type | View Type | selection | Values: |
| visibility | Visibility | selection | Values: added by Website ( |
| visibility_password | Visibility Password | char | added by Website ( |
| visibility_password_display | Visibility Password Display | char | computed added by Website ( |
| warning_info | Warning information | html | computed |
| website_id | Website | many2one→ website | added by Website ( |
| xml_id | External ID ID of the view defined in xml file | char | computed |
| is_seo_optimized | SEO optimized | boolean | computed, stored inherited from website.seo.metadata |
| seo_name | Seo name | char | translatable inherited from website.seo.metadata |
| website_meta_description | Website meta description | text | translatable inherited from website.seo.metadata |
| website_meta_keywords | Website meta keywords | char | translatable inherited from website.seo.metadata |
| website_meta_og_img | Website opengraph image | char | inherited from website.seo.metadata |
| website_meta_title | Website meta title | char | translatable inherited from website.seo.metadata |
| create_date | Created on | datetime | read-onlyautomatic |
| create_uid | Created by | many2one | read-onlyautomatic |
| display_name | Display Name | char | read-onlycomputedautomatic |
| id | ID | integer | read-onlyautomatic |
| write_date | Last Updated on | datetime | read-onlyautomatic |
| write_uid | Last Updated by | many2one | read-onlyautomatic |
Relations
Models linked from this model
- ir.model: model_id
- ir.model.data: model_data_id
- ir.ui.view: inherit_children_ids, inherit_id
- res.groups: group_ids
- theme.ir.ui.view: theme_template_id
- website: website_id
- website.controller.page: controller_page_ids
- website.page: first_page_id, page_ids
Fields of other models pointing here
- base.document.layout: external_report_layout_id
- ir.actions.act_window: search_view_id, view_id
- ir.actions.act_window.view: view_id
- ir.ui.view: inherit_id
- ir.ui.view.custom: ref_id
- payment.provider: express_checkout_form_view_id, inline_form_view_id, redirect_form_view_id, token_inline_form_view_id
- report.layout: view_id
- res.company: external_report_layout_id
- res.config.settings: external_report_layout_id
- res.country: address_view_id
- res.groups: view_access
- reset.view.arch.wizard: compare_view_id, view_id
- website.configurator.feature: page_view_id
- website.controller.page: record_view_id, view_id
- website.event.menu: view_id
- website.page: view_id
Reading this model through the API
Odoo 19 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.
curl -X POST "https://your-instance.odoo.com/json/2/ir.ui.view/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: your-db" \
-H "Content-Type: application/json" \
-d '{"domain":[],"fields":["name","mode","priority","inherit_id","theme_template_id"],"limit":5}'import requests
BASE_URL = "https://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}
res = requests.post(
f"{BASE_URL}/ir.ui.view/search_read",
headers=headers,
json={"domain": [], "fields": ["name","mode","priority","inherit_id","theme_template_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())- External API access requires Odoo's Custom plan.
- XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
- The access rights and record rules of the key's user apply.
Cite this tool
Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.
<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/ir-ui-view">ir.ui.view (Odoo 19.0)</a>Sources
Data verified on September 23, 2026 · Odoo 19.0 Community
Have an Odoo project, or want to put your ERP to work with AI? Let's talk
Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.