Releases: netboxlabs/netbox-custom-objects
Release list
v0.6.0 - 2026-07-02
New Features
NetBox Branching Support
Custom Object Types and their instances now participate fully in NetBox branching workflows. COT schema changes (adding/removing fields, modifying field definitions) and instance creates/updates/deletes are all branch-aware. A version check ensures the minimum required NetBox and netbox-branching versions are present before enabling branching features.
- #404 - Full branching support for Custom Object Types and instances
- #569 - Add version check to gate branching features on required NetBox / netbox-branching versions
GraphQL Support
Custom Object Types and their instances are now queryable and mutable via the NetBox GraphQL API. Queries, mutations, and filtering are supported for all field types.
- #30 - GraphQL support for Custom Objects
Enhancements
- #98 - Config context support for Custom Objects
- #254 - Quick Add support for object/multiobject fields
- #286 - Contacts support for Custom Objects
- #376 - Ownership field for Custom Object instances
- #532 - Integer fields now use 64-bit
BigIntegerFieldto support values exceeding the 32-bit range - #551 - Add
locationfield type for latitude/longitude coordinate pairs
Bug Fixes
- #572 - Crash on startup when netbox-branching is installed but not listed in
PLUGINS
v0.5.3 - 2026-07-02
Bug Fixes
- #558 -
CustomObject.__str__rendered"<type> None"after deletion when the type had no primary field - #561 - Related Objects link used
?<field>_id=but the filterset only registered?<field>=; both variants are now supported - #567 - Custom object type field changed to
undefinedin the Add Field page - #581 - Skip inherited anonymous export test for CustomObjectTypeField views
- #587 - Migration
0011_non_deferrable_fk_constraintsfailed on multi-table-inheritance COTs due to incorrect FK target column - #588 -
AttributeError: 'CustomFieldChoiceSet' object has no attribute 'get_choice_color'on NetBox < 4.6 - #592 - Fix Custom Objects API tests for stricter nested related object permissions
v0.5.2 - 2026-06-08
New Features
Polymorphic Reverse Descriptors
Polymorphic Object and MultiObject fields now support a related_name that exposes a working reverse accessor on the target model instance (e.g. site.co_instances.all()). The form bug that hid the related_name field when the Polymorphic checkbox was checked has also been fixed.
- #385 / #522 - Polymorphic Object and MultiObject fields:
related_namenow wires a working reverse accessor on target model classes; form fix for the field being hidden when Polymorphic is checked
Enhancements
- #559 - Add
slugfilter toCustomObjectTypeFilterSetso?slug=API queries work correctly
Bug Fixes
- #353 -
AttributeErrorin__str__when the primary field was missing from the generated model - #369 - Selection fields displayed the raw stored key instead of the human-readable label
- #370 - Lazy serializer registration via module
__getattr__fixed aSerializerNotFoundregression;skip_object_fieldsguard prevents incomplete serializers from being cached - #371 - Tags submitted via POST or PATCH were accepted and echoed in the response but never persisted to the database
- #384 -
AttributeErrorand false-positive cycle detection caused by stale FK references in cross-COT fields after model regeneration - #406 - Bulk import for Object/MultiObject fields targeting models without a
namefield (e.g.ModuleType) failed with "invalid accessor field name" - #428 - Startup warnings from NetBox Branching and Django were not suppressed on Python 3.13 due to message-pattern filter limitations; switched to module-origin filters
- #470 -
ValueError: must be a "TableNModel" instancewhen saving an object with cross-COT FK fields; caused by stale model class references after model regeneration - #491 - Cycle detection in object-field validation failed to traverse polymorphic field edges, allowing circular references that crashed model generation
- #523 - Deleting a Custom Object Type that had NetBox custom fields attached raised an error; NetBox CustomField references are now removed before the ObjectType is dropped
- #529 - Selection and multi-selection fields backed by a
CustomFieldChoiceSetwith colors rendered as plain text; colored badges are now rendered correctly in both the list table and the detail view - #535 - Deleting a MultiObject field left its through-model registered in Django's app registry, causing cascade-delete errors on subsequent operations
- #540 - Clarified Django bootstrap for portable schema export scripts
- #543 - Tag filter links in the custom object list view returned 404
- #550 - REST API rejected
nullfor optional Object and MultiObject fields ("This field may not be null.")
v0.5.1 - 2026-05-19
Bug Fixes
- #380 - Bulk edit "Select all N objects matching query" only selected the current page
- #396 - Add permission was not sufficient to access the add URL; change permission was incorrectly required
- #408 - Cross-COT FK fields missing after server restart
- #443 - API updates failed for some objects due to non-dict data in generated serializer
validate() - #477 - Deleting a custom object via the UI raised a
ValueErrordue to through-table entries being included in the delete confirmation queryset - #483 - Deletion of objects with M2M relations failed due to stale
path_infoson through-model FKs after COT model regeneration - #500 - Viewing the changelog for a custom object raised
unexpected keyword argument 'user' - #503 - FilterSet
ValueErrorcaused byModelChoiceFilternot handling polymorphic objects; replaced withNonPolymorphicObjectFilter - #507 - Migration 0011 failed with
DuplicateObjecton partial re-run and raised errors for long table names - #508 -
ValueError: Must be 'TableNModel' instanceinCustomObjectLink.left_page()due tono_cache=Truebreaking dynamic model identity - #511 - Raised minimum compatible NetBox version to 4.5.2
- #517 - Mixed-case field names created quoted PostgreSQL identifiers that broke schema cloning; migration 0014 renames them to lowercase
- #519 - Migration 0011 raised
constraint already existswhentable_schemawas not filtered to the current schema
v0.5.0 - 2026-05-08
New Features
Polymorphic Object Fields
Object and multiobject fields can now reference objects of multiple content types via a generic foreign key. Enabled per-field with the is_polymorphic flag; allowed types are configured via the related_object_types M2M relation.
- #31 - Allow GenericForeignKey Custom Object Type Fields
Portable Schema System
Custom Object Type definitions can now be exported, compared, and applied as portable JSON schema documents, enabling version-controlled schema management and automated COT lifecycle operations.
- #386 - Define a schema format for portable Custom Object Type definitions
- #387 - Custom Object Type state comparator
- #388 - Custom Object Type schema exporter
- #389 - Custom Object Type schema executor (upgrade tool)
- #390 - Schema validation and apply API endpoints
Enhancements
- #49 - Support NetBox
CUSTOM_VALIDATORSsetting keyed by COT slug (e.g.netbox_custom_objects.my-slug) - #224 - Accept
app_label/modelin API when creating object-type fields (removes requirement forrelated_object_typeID) - #270 - Add context field on Custom Object Type Fields to support secondary contextual info in dropdown selects
- #296 / #366 - Filterset and filter-form support for all custom field types (object, multiobject, boolean, select)
- #385 - Add
related_namefield to Custom Object Type Fields for configurable reverse accessor names - #391 - Automatically heal mixin column drift on
post_migrateto keep COT schemas consistent with base class changes - #392 - Validate Custom Object Type
versionfield as a PEP 440 semantic version string - #397 - Add branch limitation warnings to all write-operation views
Bug Fixes
- #488 - Make custom-object FK constraints non-DEFERRABLE to prevent potential deadlocks
v0.4.10 - 2026-04-13
Bug Fixes
- #456 - Additional guards against a partially-migrated schema crashing during
manage.py migrate
v0.4.9 - 2026-04-08
Bug Fixes
- #456 - Error executing migration due to missing
group_namecolumn when upgrading from v0.4.6
v0.4.8 - 2026-04-07
Note: See also v0.4.7 for recent bug fixes and enhancements, as this release is a fast-follow.
Bug Fixes
- #441 - ObjectSelectorView does not support targeting custom objects from core custom fields
v0.4.7 - 2026-04-07
Enhancements
- #25 - Linked custom objects should show up in the API response for related objects
- #193 - Grouping custom object types in nav menu
- #292 - Move COTF to their own standard ViewTab in the COT detail view
- #308 - Limit rows qty in "Custom Objects linking to this object" panels
Bug Fixes
- #382 - Primary name field breaks related custom objects and NetBox objects
- #383 - Related objects and count on NetBox Objects are rendered twice
- #394 - Reindex CachedValues when COT fields are changed
- #407 - Custom object types visible in menu without permissions
- #409 - Required Fields also required when bulk editing
- #417 - Filtering objects by multiple-object field does not work
- #423 - Can't use custom object as field type in POST /api/plugins/custom-objects/custom-object-type-fields/
- #429 - Deleting Custom Object and Custom Object Type Together Causes Missing Relation Error
- #440 - Typeahead search returns no results for non-text primary fields