Explorar el Código

Fixes #6130: Improve display of assigned models in custom fields list

jeremystretch hace 4 años
padre
commit
9e62d1ad8f

+ 1 - 0
docs/release-notes/version-2.11.md

@@ -15,6 +15,7 @@
 * [#6106](https://github.com/netbox-community/netbox/issues/6106) - Allow assigning a virtual interface as the parent of an existing interface
 * [#6107](https://github.com/netbox-community/netbox/issues/6107) - Fix rack selection field on device form
 * [#6110](https://github.com/netbox-community/netbox/issues/6110) - Fix handling of TemplateColumn values for table export
+* [#6130](https://github.com/netbox-community/netbox/issues/6130) - Improve display of assigned models in custom fields list
 
 ---
 

+ 4 - 1
netbox/extras/admin.py

@@ -1,8 +1,10 @@
 from django import forms
 from django.contrib import admin
 from django.contrib.contenttypes.models import ContentType
+from django.utils.safestring import mark_safe
 
 from utilities.forms import ContentTypeChoiceField, ContentTypeMultipleChoiceField, LaxURLField
+from utilities.utils import content_type_name
 from .models import CustomField, CustomLink, ExportTemplate, JobResult, Webhook
 from .utils import FeatureQuery
 
@@ -110,7 +112,8 @@ class CustomFieldAdmin(admin.ModelAdmin):
     )
 
     def models(self, obj):
-        return ', '.join([ct.name for ct in obj.content_types.all()])
+        ct_names = [content_type_name(ct) for ct in obj.content_types.all()]
+        return mark_safe('<br/>'.join(ct_names))
 
 
 #

+ 2 - 2
netbox/utilities/forms/fields.py

@@ -13,6 +13,7 @@ from django.forms import BoundField
 from django.urls import reverse
 
 from utilities.choices import unpack_grouped_choices
+from utilities.utils import content_type_name
 from utilities.validators import EnhancedURLValidator
 from . import widgets
 from .constants import *
@@ -124,8 +125,7 @@ class ContentTypeChoiceMixin:
 
     def label_from_instance(self, obj):
         try:
-            meta = obj.model_class()._meta
-            return f'{meta.app_config.verbose_name} > {meta.verbose_name}'
+            return content_type_name(obj)
         except AttributeError:
             return super().label_from_instance(obj)
 

+ 8 - 0
netbox/utilities/utils.py

@@ -296,6 +296,14 @@ def array_to_string(array):
     return ', '.join('-'.join(map(str, (g[0], g[-1])[:len(g)])) for g in group)
 
 
+def content_type_name(contenttype):
+    """
+    Return a proper ContentType name.
+    """
+    meta = contenttype.model_class()._meta
+    return f'{meta.app_config.verbose_name} > {meta.verbose_name}'
+
+
 #
 # Fake request object
 #