Hello Craig,
There's unfortunately no way to hook into the migration auto-detector to specify
additional operations to be added.
What I suggest you do instead is dynamically inject operations in the plan that
is about to be run by connecting a pre_migrate signal. When you detect
CreateModel operations for subclasses of your AbtractModel you could insert
operations to be performed before and after them. This is pattern we use
internally to perform ContentType rename on RenameModel operations[0].
As for the makemigrations hooks I think it would require a lot of thought and
efforts to get right. Right now the auto-detector is a black box that deals with
dependencies and model state deltas resolution.
In an ideal world model/fields objects would be able to generate the list of
operations they require to move from state A to B as a public API and the
auto-detector would simply iterate over the existing migrations state models and
compare them against the current state of the project.
Best,
Simon
[0]
https://github.com/django/django/blob/525dc283a68c0d47f5eb2192cc4a20111d561ae0/django/contrib/contenttypes/management/__init__.py#L45-L84