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.0Adds 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
Required by other modules
Menus it adds
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-03Confirmation status: 5 confirmed, 4 with no information of 9 versions.
Sources · Odoo 12.0
Confirmed on 2026-11-03 in branch 12.0 of OCA/server-tools.
terminal Installation and usage
OCA documentation · Odoo 18.0Installation
Source · Odoo 18.0This 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.
Configuration
Source · Odoo 18.0To 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_imageas an example. - You have to inherit model
base_multi_image.ownerto 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 needpre_init_hook_for_submodulesanduninstall_hook_for_submodulesas 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_imagemodule 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.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
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.