DEV Community

Discussion on: Abusing the Django Admin app

Collapse
 
chillaranand profile image
Chillar Anand

Excellent explanations.

I ran into the same problem of populating Django admin for a legacy database. I ended up using mixin and type can populate the entire admin with relevant columns.

class ListAdminMixin(object):
    def __init__(self, model, admin_site):
        self.list_display = [field.name for field in model._meta.fields if field.name != "id"]
        super(ListAdminMixin, self).__init__(model, admin_site)
models = apps.get_models()
for model in models:
    admin_class = type('AdminClass', (ListAdminMixin, admin.ModelAdmin), {})
     try:
         admin.site.register(model, admin_class)
    except admin.sites.AlreadyRegistered:
         pass