- ct = ContentType.objects.get_for_model(sender)
- embeds = Embed.objects.filter(embedded_content_type=ct, embedded_object_id=instance.id)
- for embed in embeds:
- embed.delete()
- Embed.objects.filter(embedder_content_type=ct, embedder_object_id=instance.id).delete()
+ if sender in embeddable_content_types.classes:
+ # Don't bother looking for Embed objects that embed a contenttype that can't be embedded.
+ ct = ContentType.objects.get_for_model(sender)
+ embeds = Embed.objects.filter(embedded_content_type=ct, embedded_object_id=instance.id)
+ for embed in embeds:
+ embed.delete()
+
+ if not hasattr(sender._meta, '_has_embed_fields'):
+ sender._meta._has_embed_fields = False
+ for field in sender._meta.fields:
+ if isinstance(field, EmbedField):
+ sender._meta._has_embed_fields = True
+ break
+
+ if sender._meta._has_embed_fields:
+ # If it doesn't have embed fields, then it can't be an embedder.
+ Embed.objects.filter(embedder_content_type=ct, embedder_object_id=instance.id).delete()