Releases
0.5.3
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
0.5.2
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.")
0.5.1
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
0.5.0
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
0.4.10
Bug Fixes
- #456 - Additional guards against a partially-migrated schema crashing during
manage.py migrate
0.4.9
Bug Fixes
- #456 - Error executing migration due to missing
group_namecolumn when upgrading from v0.4.6
0.4.8
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
0.4.7
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
0.4.6
Bug Fixes
- #348 - Saving a custom object type field breaks object-field relationships
- #372 - Double queryset evaluation in custom object list view
0.4.5
Bug Fixes
- #264 - Make fields in bulk-edit not required
- #317 - Add missing serializer Fields to CustomObjectTypeSerializer
- #340 - Improve query performance for related models
- #351 - Prevent makemigrations from picking up custom object changes
0.4.4
Bug Fixes
- #230 - Warning on unique object type fields
- #284 - "Tags" field not listed in table config dialog
- #294 - Creating journal entry on custom object item leaves Created By blank
- #310 - Linkify primary field in custom object table view
- #336 - Support NetBox v4.5 (Beta)
0.4.3
Bug Fixes
- #299 - Add additional checks for restricted names of custom object types
- #326 - Improve initialization code check when running migrations
- #330 - Fix limit checking for max_custom_object_types
0.4.2
Enhancements
- #278 - Add bulk import buttons to nav sidebar
- #282 - Allow Admins to limit the number of Custom Object Types
Bug Fixes
- #266 - Creating / editing Custom Object via API with field type Multiple Object fails
- #283 - IntegrityError when deleting a CO that is referenced by another CO
- #287 - Description field missing from API views
- #290 - Improve API object_types Labels for Custom Object Types
- #313 - Cap number of "Custom Objects linking to this object" on Detail view
0.4.1
Bug Fixes
- #237 - Incorrect validation error when adding multiple fields pointing to the same Custom Object Type
- #251 - Bulk import broken due to incorrect slug handling
- #273 -
group_namemissing from Custom Object Type serializer
0.4.0
New Features
Limited Branching Compatibility for Custom Objects
Custom Objects now has limited compatibility with NetBox Branching. Please see the documentation for more details.
Enhancements
- #37 - Limited Branching compatibility for Custom Objects
- #42 - Populate default values for Multi-Object fields
- #87 - Make Custom Object "name" clickable
- #150 - Cannot import created CustomObject (Documentation)
Bug Fixes
- #70 - Incorrect validation message on integer field min/max defaults
- #104 - Bulk edit not possible on fields of type
object - #105 - Bulk edit not possible on fields of type
multiobject - #172 - Postgres errors on startup
- #189 - Exceptions when creating Custom Objects
- #195 - RecursionError in netbox_custom_objects plugin due to circular dependencies in CustomObjectType Fields
- #210 - Custom Objects plugin visible when logged out
- #212 - Quick Search not working