|
14 | 14 | from django.db import connection, models |
15 | 15 | from django.db.models import Q |
16 | 16 | from django.db.models.functions import Lower |
| 17 | +from django.db.models.signals import pre_delete |
17 | 18 | from django.urls import reverse |
18 | 19 | from django.utils.translation import gettext_lazy as _ |
| 20 | +from core.signals import handle_deleted_object |
19 | 21 | from extras.choices import ( |
20 | 22 | CustomFieldFilterLogicChoices, |
21 | 23 | CustomFieldTypeChoices, |
@@ -501,14 +503,14 @@ def delete(self, *args, **kwargs): |
501 | 503 | model = self.get_model() |
502 | 504 | object_type = ObjectType.objects.get_for_model(model) |
503 | 505 | ObjectChange.objects.filter(changed_object_type=object_type).delete() |
504 | | - object_type_qs = ObjectType.objects.filter(pk=object_type.pk) |
505 | | - # _raw_delete is necessary to avoid post_delete signal handling |
506 | | - object_type_qs._raw_delete(object_type_qs.db) |
507 | 506 | super().delete(*args, **kwargs) |
| 507 | + |
| 508 | + # Temporarily disconnect the pre_delete handler to skip the ObjectType deletion |
| 509 | + pre_delete.disconnect(handle_deleted_object) |
| 510 | + object_type.delete() |
508 | 511 | with connection.schema_editor() as schema_editor: |
509 | 512 | schema_editor.delete_model(model) |
510 | | - # TODO: The ContentType should be cleaned up as well but it throws an error in this flow |
511 | | - # ContentType.objects.get(pk=object_type.id).delete() |
| 513 | + pre_delete.connect(handle_deleted_object) |
512 | 514 |
|
513 | 515 |
|
514 | 516 | class CustomObjectTypeField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): |
|
0 commit comments