From 7bbb04d2d3c493d4c670dbffc762a66f062fcfbf Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 20 Aug 2025 13:58:05 -0400 Subject: [PATCH] Fixes #20137: Ensure proper model resolution for get_for_model() and get_for_models() (#20138) --- netbox/core/models/object_types.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/netbox/core/models/object_types.py b/netbox/core/models/object_types.py index b4295d007..bb031b4eb 100644 --- a/netbox/core/models/object_types.py +++ b/netbox/core/models/object_types.py @@ -1,3 +1,4 @@ +import inspect from collections import defaultdict from django.contrib.contenttypes.models import ContentType @@ -64,6 +65,9 @@ class ObjectTypeManager(models.Manager): Retrieve or create and return the ObjectType for a model. """ from netbox.models.features import get_model_features, model_is_public + + if not inspect.isclass(model): + model = model.__class__ opts = self._get_opts(model, for_concrete_model) try: @@ -75,7 +79,7 @@ class ObjectTypeManager(models.Manager): app_label=opts.app_label, model=opts.model_name, public=model_is_public(model), - features=get_model_features(model.__class__), + features=get_model_features(model), )[0] return ot @@ -93,6 +97,8 @@ class ObjectTypeManager(models.Manager): needed_models = defaultdict(set) needed_opts = defaultdict(list) for model in models: + if not inspect.isclass(model): + model = model.__class__ opts = self._get_opts(model, for_concrete_models) needed_models[opts.app_label].add(opts.model_name) needed_opts[(opts.app_label, opts.model_name)].append(model) @@ -117,7 +123,7 @@ class ObjectTypeManager(models.Manager): app_label=app_label, model=model_name, public=model_is_public(model), - features=get_model_features(model.__class__), + features=get_model_features(model), ) return results