跳至主要内容

Odoo 19 Studio:低代码表单和字段生成器更新

Odoo 19 Studio 演练:拖放字段构建器、视图编辑器、自动化操作、非开发人员的应用程序构建器以及自定义之前的限制。

E
ECOSIRE Research and Development Team
|2026年5月4日9 分钟阅读1.6k 字数|

本文目前仅提供英文版本。翻译即将推出。

Odoo Studio is the marketing name for the platform's no-code/low-code customization layer. In Odoo 17 it was capable but uneven — great for adding fields and tweaking views, awkward for anything involving relations or computed values.

Odoo Studio is the marketing name for the platform's no-code/low-code customization layer. In Odoo 17 it was capable but uneven — great for adding fields and tweaking views, awkward for anything involving relations or computed values. Odoo 19's Studio rewrote the field builder, modernized the view editor, and added automated-action templates that cover most workflow customizations without leaving the browser.

This article walks through what Studio can do in 19, where it still falls short of a custom Python module, and the decision rule for when to escalate from Studio to a developer module.

Key Takeaways

  • Field builder added "smart" types: computed (Python expression), related, image with thumbnail
  • View editor supports kanban, list, form, search, calendar, gantt, pivot in one tool
  • Automated actions cover create/update triggers + scheduled cron + on-button-click
  • App builder lets non-developers ship a basic app (model + views + menu) without IDE
  • Studio changes export as a real Odoo module — version-controllable
  • Limits remain for: complex computed fields, multi-record actions, custom reports
  • Performance impact is minimal but compounding — audit Studio fields periodically

What Studio is good at

Studio in 19 handles 80-85% of common ERP customization requests cleanly:

  • Adding a custom field to an existing model (text, number, date, boolean, selection, relation)
  • Modifying the form view to add/remove/reorder fields
  • Adding a new section or tab to a form
  • Building a custom kanban or list view
  • Creating a simple automated action ("when invoice is paid, send a Slack notification")
  • Building a small standalone app (custom model with form + list + menu)

For these tasks, the browser experience is sufficient. No git, no PR, no deploy.

The new field builder

Field types you can create from Studio in 19:

TypeDescriptionNew in 19?
CharShort textNo
TextLong textNo
IntegerWhole numberNo
FloatDecimalNo
BooleanTrue/falseNo
Date / DatetimeCalendar fieldNo
SelectionDropdown of fixed valuesNo
Many2oneRelation to one recordNo
One2many / Many2manyRelation to many recordsNo
ImagePhoto with thumbnail variantsImproved
ComputedPython expression evaluated on readYes
RelatedMirrors another field via pathImproved (now multi-hop)
Currency / MonetaryMoney with currency_id linkNo
TagsColor-coded tagsNew
PhoneClick-to-call formatted phoneNew

The computed-field option is the headline addition. Previously you had to write a Python module for any field that needed to combine other fields into a derived value. In 19, Studio lets you express simple Python:

# Studio computed field — example: full address as one string
record.street + ' ' + (record.street2 or '') + ', ' + record.city + ' ' + (record.zip or '') + ' ' + record.country_id.name

The expression evaluates in a sandbox with access to record, env (limited), and a small library of helpers (date arithmetic, string formatting, math). Loops and complex logic are blocked — Studio explicitly nudges toward "if you need that, build a real module."

View editor — unified

Odoo 17 had separate flows for editing form vs list vs kanban vs search. Odoo 19 unified them into one editor that lets you toggle between view types and edit each.

Common improvements:

  • Drag-and-drop field placement
  • Field properties panel with all attributes (required, readonly, invisible, widget, domain)
  • Conditional display via Python expression on invisible attribute
  • Visual preview while editing (live data shown when possible)
  • Undo/redo stack with view-level granularity

For users coming from Salesforce Lightning Builder or HubSpot's customization tools, the experience now feels comparable.

Automated actions

Automated actions in 19 categorize:

  • On create — runs when a record is first inserted
  • On update — runs when specific fields change
  • On delete — runs before record is removed (can block)
  • Scheduled — cron-style time-based
  • On button click — runs when a custom action button is pressed

Each action can:

  • Send an email (using email templates)
  • Update field(s) on the triggering record
  • Update field(s) on related records (one hop)
  • Create a record on another model
  • Make a webhook call (POST to URL)
  • Run a Python expression (sandboxed)
  • Create activity / mail thread post

Multi-step actions (run A, then B) chain via the action's "next action" field. For workflow logic with branching, the Approval module ships separately and integrates with Studio actions.

App builder for non-developers

Studio lets a non-developer ship a basic app:

  1. Click "New App" in Studio
  2. Define the model (e.g., Equipment) with fields
  3. Generate default form, list, kanban views
  4. Add a menu entry
  5. Configure access rights via the security tab
  6. Save → the app appears in the apps menu

Limits: you can't define record rules visually (must use Studio's record-rules editor, which is a structured form), can't define a custom report (use the QWeb editor separately), can't define multi-table joins beyond single-hop relations.

Useful for: equipment registries, project asset tracking, internal request forms, simple inventory of non-stocked items.

Studio outputs a real module

A common misconception: "Studio changes are stored in some database table I can't version-control." In Odoo 19, every Studio change generates a regular Odoo module under the hood. You can:

  • Export the module as a zip
  • Commit it to git
  • Apply it to other databases (staging, prod)
  • Modify it manually if needed

This means Studio is suitable for production use cases — your customizations migrate, version, and deploy cleanly.

When to escalate to a developer module

Studio in 19 falls short for:

CustomizationStudioDeveloper module
Single field on existing modelYesYes (overkill)
Computed field with simple expressionYesYes
Computed field with complex business logicNoYes
Override _compute_* to depend on multi-hop fieldsNoYes
Custom QWeb reportNoYes
Override stock workflow (e.g., custom _action_assign)NoYes
Add cron job with complex queriesLimitedYes
Integrate with external API beyond webhookNoYes
Multi-record bulk actionLimitedYes
Performance-critical computed fieldNo (sandbox slow)Yes
Custom widget (frontend)NoYes
Custom OWL componentNoYes

Rule of thumb: if the customization requires more than 5 lines of Python or any frontend code, escalate to a developer module.

Performance considerations

Studio computed fields run in a Python sandbox that's slower than a native compiled compute method. For fields read frequently (e.g., shown in list views), this matters:

  • 5-10x slower per evaluation than native
  • Cached per record-and-field, so repeat reads are fast
  • Bulk reads (list view of 100 records) feel slower

Mitigation: use store=True on Studio computed fields where the input fields don't change often. The sandbox compute runs once at write-time, then reads from storage.

Migration considerations

If you used Odoo 17 Studio, your changes migrate cleanly. Specific things to re-check:

  • Computed fields whose expression depends on a field that moved between modules (rare, but happens)
  • Automated actions that webhook to URLs — verify the URLs still respond
  • View customizations on views that materially changed (POS, accounting, manufacturing)

Frequently Asked Questions

Is Studio included in all Odoo Editions?

Studio is an Enterprise-only feature. Community edition does not include Studio. If you migrate from a custom community installation to Enterprise, Studio becomes available; you can build customizations that previously required Python modules.

Can I edit Studio output as a regular module?

Yes. Export the Studio module, edit the Python/XML by hand, re-import, or maintain it as a regular addon in your repo. Once you start hand-editing, future Studio UI changes to the same module may conflict; manage carefully.

Does Studio block custom Python modules from coexisting?

No. Studio modules and traditional addon modules coexist fine. Best practice: name Studio modules with a prefix (studio_*) so they're easy to identify, and keep behavioral logic in traditional modules where possible.

How do I move Studio changes from staging to production?

Three options: (1) Export from staging, import to prod (manual but explicit). (2) Apply the same module via git deployment (recommended for CI/CD pipelines). (3) Re-do the changes in production Studio (only if changes are very small).

Can Studio do multi-record updates (e.g., "for all open orders, set field X to Y")?

Not directly. Automated actions trigger per-record. For bulk operations, write a server action (Python) and trigger it from Studio. For one-time operations, use the Odoo shell or a small server action ran from the developer mode.


Studio in Odoo 19 is the right tool for fast, iterative ERP customization — until it isn't, at which point a developer module is the right escalation. ECOSIRE's Odoo customization team can audit your Studio customizations, identify which should stay in Studio vs migrate to proper modules, and build the developer modules for the cases Studio can't cover. See our Odoo implementation service for end-to-end customization workflows.

E

作者

ECOSIRE Team

Technical Writing

The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.

ECOSIRE

使用 Odoo ERP 转变您的业务

专家 Odoo 实施、定制和支持可简化您的运营。