Skip to content

Commit 2286ab6

Browse files
authored
Fixes #310 - Linkify primary field (#324)
1 parent d0b7182 commit 2286ab6

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

netbox_custom_objects/field_types.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ def get_annotated_form_field(self, field, enforce_visibility=True, **kwargs):
110110
def get_table_column_field(self, field, **kwargs):
111111
raise NotImplementedError
112112

113+
def render_table_column_linkified(self, record):
114+
return linkify(record)
115+
113116
def after_model_generation(self, instance, model, field_name): ...
114117

115118
def create_m2m_table(self, instance, model, field_name): ...

netbox_custom_objects/views.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,21 @@ def get_table(self, data, request, bulk_actions=True):
132132
field.name
133133
)
134134
)
135-
# Define a method "render_table_column" method on any FieldType to customize output
136-
# See https://django-tables2.readthedocs.io/en/latest/pages/custom-data.html#table-render-foo-methods
137-
try:
138-
attrs[f"render_{field.name}"] = field_type.render_table_column
139-
except AttributeError:
140-
pass
135+
# Primary field (if text-based) is linkified to the target Custom Object. Other fields may be
136+
# rendered via field-specific "render_foo" methods as supported by django-tables2.
137+
linkable_field_types = [
138+
CustomFieldTypeChoices.TYPE_TEXT,
139+
CustomFieldTypeChoices.TYPE_LONGTEXT,
140+
]
141+
if field.primary and field.type in linkable_field_types:
142+
attrs[f"render_{field.name}"] = field_type.render_table_column_linkified
143+
else:
144+
# Define a method "render_table_column" method on any FieldType to customize output
145+
# See https://django-tables2.readthedocs.io/en/latest/pages/custom-data.html#table-render-foo-methods
146+
try:
147+
attrs[f"render_{field.name}"] = field_type.render_table_column
148+
except AttributeError:
149+
pass
141150

142151
self.table = type(
143152
f"{data.model._meta.object_name}Table",

0 commit comments

Comments
 (0)