The necessity to define the model on the ModelAdmin is the one thing that rubs me the wrong way about the metaclass approach - there's no precedence for that (other than inlines, I guess) in the Django world. On the other hand, the use case of registering the same ModelAdmin with different models shouldn't be *that* common...