Unable to delete custom field on object type from a plugin that has been removed #10198

Closed
opened 2025-12-29 21:28:06 +01:00 by adam · 1 comment
Owner

Originally created by @ghost on GitHub (Sep 6, 2024).

Originally assigned to: @arthanson on GitHub.

Deployment Type

Self-hosted

NetBox Version

v.4.1.0

Python Version

3.10

Steps to Reproduce

Install a plugin that adds object types (ex: netbox_data_flows)
Create a custom field, assign custom field to an object type from the plugin
Remove the plugin
Delete the custom field

image

Expected Behavior

Custom field should be deleted.

Observed Behavior

image

Originally created by @ghost on GitHub (Sep 6, 2024). Originally assigned to: @arthanson on GitHub. ### Deployment Type Self-hosted ### NetBox Version v.4.1.0 ### Python Version 3.10 ### Steps to Reproduce Install a plugin that adds object types (ex: [netbox_data_flows](https://github.com/Alef-Burzmali/netbox-data-flows)) Create a custom field, assign custom field to an object type from the plugin Remove the plugin Delete the custom field ![image](https://github.com/user-attachments/assets/04167a49-0b5a-481b-baa7-66241102925b) ### Expected Behavior Custom field should be deleted. ### Observed Behavior ![image](https://github.com/user-attachments/assets/a12af524-e8fc-4d36-9325-25b2b733d34a)
adam added the type: bugstatus: acceptedseverity: low labels 2025-12-29 21:28:06 +01:00
adam closed this issue 2025-12-29 21:28:06 +01:00
Author
Owner

@arthanson commented on GitHub (Sep 11, 2024):

  File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/views/generic/base.py", line 104, in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/arthurhanson/dev/work/netbox/netbox/netbox/views/generic/base.py", line 77, in dispatch
    return super().dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/arthurhanson/dev/work/netbox/netbox/utilities/views.py", line 125, in dispatch
    return super().dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/arthurhanson/dev/work/netbox/netbox/utilities/views.py", line 39, in dispatch
    return super().dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/views/generic/base.py", line 143, in dispatch
    return handler(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/arthurhanson/dev/work/netbox/netbox/netbox/views/generic/bulk_views.py", line 863, in post
    obj.delete()
  File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/db/models/base.py", line 1183, in delete
    return collector.delete()
           ^^^^^^^^^^^^^^^^^^
  File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/db/models/deletion.py", line 463, in delete
    signals.pre_delete.send(
  File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/dispatch/dispatcher.py", line 189, in send
    response = receiver(signal=self, sender=sender, **named)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/arthurhanson/dev/work/netbox/netbox/extras/signals.py", line 50, in handle_cf_deleted
    instance.remove_stale_data(instance.object_types.all())
  File "/Users/arthurhanson/dev/work/netbox/netbox/extras/models/customfields.py", line 298, in remove_stale_data
    instances = model.objects.filter(custom_field_data__has_key=self.name)
                ^^^^^^^^^^^^^
@arthanson commented on GitHub (Sep 11, 2024): ``` File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/views/generic/base.py", line 104, in view return self.dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/arthurhanson/dev/work/netbox/netbox/netbox/views/generic/base.py", line 77, in dispatch return super().dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/arthurhanson/dev/work/netbox/netbox/utilities/views.py", line 125, in dispatch return super().dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/arthurhanson/dev/work/netbox/netbox/utilities/views.py", line 39, in dispatch return super().dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/views/generic/base.py", line 143, in dispatch return handler(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/arthurhanson/dev/work/netbox/netbox/netbox/views/generic/bulk_views.py", line 863, in post obj.delete() File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/db/models/base.py", line 1183, in delete return collector.delete() ^^^^^^^^^^^^^^^^^^ File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/db/models/deletion.py", line 463, in delete signals.pre_delete.send( File "/Users/arthurhanson/dev/work/netbox/venv/lib/python3.11/site-packages/django/dispatch/dispatcher.py", line 189, in send response = receiver(signal=self, sender=sender, **named) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/arthurhanson/dev/work/netbox/netbox/extras/signals.py", line 50, in handle_cf_deleted instance.remove_stale_data(instance.object_types.all()) File "/Users/arthurhanson/dev/work/netbox/netbox/extras/models/customfields.py", line 298, in remove_stale_data instances = model.objects.filter(custom_field_data__has_key=self.name) ^^^^^^^^^^^^^ ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#10198