Is this "smart" way of populating the admin page ok code-wise?
The usual "django" way of doing this  - is to use get_app_config() function to get the AppConfig instance, then call .get_models() method:

from django.apps import apps

app = apps.get_app_config('auth')

for model in app.get_models(): 
    admin.site.register(model)