OdooWiki OCA HUB

Multiple images base

base_multi_image folder_open OCA/server-tools open_in_new
Tools License: AGPL-3

This module extends the functionality of any model to support multiple images (a gallery) attached to it and allow you to manage them.

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Adds a reusable image gallery to any Odoo record, letting users store several images per record from a URL, a file, the database, the filestore or an attachment, and pick one as the main image.

This module gives Odoo a shared way to attach several images to any record, instead of only one picture per record. It adds a new "Images" list on records that use it, plus a standalone screen under the Custom menu called "Multi images" where you can see all images in a kanban, list or form view.

For each image you choose how it is stored: a remote URL, a file on the server, directly in the database, in the filestore, or as an attachment. Depending on that choice, the form asks for the matching information and refuses to save if it is missing (for example, an URL is required when the storage is URL). The image title and extension are filled in automatically from the file name, path or URL, and the image can be previewed full size.

A record can also expose a "Main image" that always shows the first image of its gallery, so existing screens that expect one picture keep working. When a record is deleted, its images are deleted too. The module also provides migration helpers used when installing or uninstalling modules that move from a single image to a gallery and back.

Depends on

base

Menus it adds

image_menu
Models and fields (2)
  • base_multi_image.image · new modelurl (Image remote URL), name (Image title), path (Image path), storage, comments, filename, owner_id (Owner), sequence, extension (File extension), image_1920 (Full-sized image), owner_model, owner_ref_id (Referenced Owner), attachment_id (Image stored in Attachment), file_db_store (Image stored in database), show_technical, attachment_image (Image)
  • base_multi_image.owner · new modelimage_ids (Images), image_1920 (Main image)

Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub

Availability by version

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

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

Sources · Odoo 14.0

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

terminal Installation and usage

OCA documentation · Odoo 18.0

This module adds abstract models to work on. Its sole purpose is to serve as base for other modules that implement galleries, so if you install this one manually you will notice no change. You should install any other module based on this one and this will get installed automatically.

To manage all stored images, you need to:

  • Go to Settings \> Technical \> Multi images.

... but you probably prefer to manage them from the forms supplied by submodules that inherit this behavior.

Development

To develop a module based on this one:

  • See module product_multi_image as an example.
  • You have to inherit model base_multi_image.owner to the model that needs the gallery: class MyOwner(models.Model): _name = "my.model.name" _inherit = ["my.model.name", "base_multi_image.owner"] # If you need this, you will need pre_init_hook_for_submodules and uninstall_hook_for_submodules as detailed below. old_image_field = fields.Binary(related="image_main", store=False)
  • Somewhere in the owner view, add:
  • If the model you are extending already had an image field, and you want to trick Odoo to make those images to multi-image mode, you will need to make use of the provided ~.hooks.pre_init_hook_for_submodules and ~.hooks.uninstall_hook_for_submodules, like the product_multi_image module does: try: from odoo.addons.base_multi_image.hooks import ( pre_init_hook_for_submodules, uninstall_hook_for_submodules, ) except ImportError: pass def pre_init_hook(cr): """Transform single into multi images.""" pre_init_hook_for_submodules(cr, "product.template", "image") pre_init_hook_for_submodules(cr, "product.product", "image_variant") def uninstall_hook(cr, registry): """Remove multi images for models that no longer use them.""" uninstall_hook_for_submodules(cr, registry, "product.template") uninstall_hook_for_submodules(cr, registry, "product.product")

[](https://runbot.odoo-community.org/runbot/149/10.0)

No verified information in OCA: Usage.

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.