Releases: CESNET/netbox-custom-objects-tab
v2.0.1
What's Changed
Added
- Typed tabs (per-type) — each Custom Object Type gets its own tab with a full-featured list view: type-specific columns, filterset sidebar, bulk edit/delete, configure table, and HTMX pagination.
typed_modelsandtyped_weightconfig settings.- Third-party plugin model support for both tab modes.
Changed
- Renamed
modelsconfig tocombined_models;labeltocombined_label;weighttocombined_weight. - Refactored views from single
views.pytoviews/package (__init__.py,combined.py,typed.py). - Templates reorganized into
combined/andtyped/subdirectories.
Fixed
- Handle missing database during startup —
register_typed_tabs()now catchesOperationalErrorandProgrammingErrorso NetBox can start even when the database is unavailable or migrations haven't run yet. - Bulk action return URL in typed tabs — uses query parameter
?return_url=onformactionfor reliable redirect.
Full Changelog: https://github.com/CESNET/netbox-custom-objects-tab/blob/v2.0.1/CHANGELOG.md
v2.0.1b1
What's New
Typed tabs (per-type) — each Custom Object Type gets its own tab with a full-featured list view: type-specific columns, filterset sidebar, bulk edit/delete, configure table, and HTMX pagination.
Added
typed_modelsandtyped_weightconfig settings- Third-party plugin model support for both tab modes
Changed
- Renamed config:
models→combined_models,label→combined_label,weight→combined_weight - Refactored views into
views/package; templates intocombined/andtyped/subdirectories
Fixed
- Bulk action return URL in typed tabs
See CHANGELOG.md for full details.
v1.0.1
Bug Fixes
Templates missing from installed package (#packaging)
When installing netbox-custom-objects-tab from PyPI or a pre-built wheel, the HTML
templates were not included in the package, causing a TemplateDoesNotExist error on
every tab page load. This particularly affected Docker-based NetBox deployments.
Root cause: setuptools does not include non-Python files by default. The
[tool.setuptools.package-data] directive was missing from pyproject.toml, and no
MANIFEST.in existed to cover source distributions.
Fix: Added MANIFEST.in and [tool.setuptools.package-data] in pyproject.toml
so all HTML templates under netbox_custom_objects_tab/templates/ are bundled into
both wheel and sdist artifacts.
Upgrade Notes
If you installed 1.0.0 from PyPI, upgrade with:
pip install --upgrade netbox-custom-objects-tabNo migrations, no configuration changes required.
Full Changelog: v1.0.0...v1.0.1
v1.0.0
What's New
First stable release of netbox-custom-objects-tab — a NetBox 4.5.x plugin that adds
a Custom Objects tab to standard object detail pages, showing any Custom Object
instances from the netbox_custom_objects plugin that reference the viewed object via
OBJECT or MULTIOBJECT fields.
Added
- Custom Objects tab on NetBox object detail pages (Device, Site, Rack, and any
configured model), showing Custom Object instances that reference the viewed object
via OBJECT or MULTIOBJECT typed fields. - Pagination using NetBox's
EnhancedPaginator; respects the user's personal
per-page preference and the?per_page=NURL parameter. - Text search (
?q=) filtering results by Custom Object instance display name,
Custom Object Type name, and field label. - Type filter dropdown (
?type=<slug>) to narrow results to a single Custom Object
Type, populated dynamically from types present in the current result set. - Tag filter dropdown (
?tag=<slug>) to narrow results to objects with a specific
tag. Tag data is pre-fetched in bulk — no N+1 query cost. - Column sorting — clicking Type, Object, or Field column headers sorts
the table in-memory; a second click toggles direction. - Value column — shows the actual field value: a link for OBJECT fields, or
comma-separated links (truncated at 3) for MULTIOBJECT fields. - Tags column — colored tag badges per row;
—when none. - Permission-gated action buttons — Edit (requires
change) and Delete (requires
delete) buttons per row. Users without permissions see no action buttons. - HTMX partial updates — pagination, sorting, search, type-dropdown, and
tag-dropdown changes swap only the table zone in-place without a full page reload.
URL is updated viapushStateso links remain shareable and the back button works. - Configure Table — a "Configure Table" button lets authenticated users show, hide,
and reorder columns (Type, Object, Value, Field, Tags). Preferences are persisted
per-user inUserConfig. The Actions column is always visible. - Efficient badge counts — the tab badge on detail pages is computed with
COUNT(*)
queries only; full object rows are loaded only when the tab itself is opened. - Wildcard model registration —
modelsconfig acceptsapp_label.*wildcards
(e.g.dcim.*,ipam.*). - Third-party plugin model support — any installed Django app can be listed in
models. - Default models:
['dcim.*', 'ipam.*', 'virtualization.*', 'tenancy.*', 'contacts.*']. - Tab is hidden automatically (
hide_if_empty=True) when no custom objects reference the
viewed object. - Configurable tab
labelandweightviaPLUGINS_CONFIG.
Fixed
- Edit/Delete return URL — after saving an edit or confirming a deletion, NetBox
redirects back to the Custom Objects tab (preserving active filters) instead of the
Custom Object list page.
Requirements
- NetBox 4.5.0 – 4.5.99
netbox_custom_objectsplugin installed and configured
Installation
pip install netbox-custom-objects-tab==1.0.0See the README for
full setup instructions.