Adicionando todos os models no django admin

por Fábio Cerqueira | 05 set, 2012 | Tags: python django django-admin

Na lista do Django Brasil surgiu a dúvida de como adicionar automaticamente todos os models no admin.

Então eu criei uma forma de registrar no admin os models das aplicações que não possuem um arquivo admin.py

from django.conf import settings
from django.db.models import get_models
from django.utils.importlib import import_module
from django.utils.module_loading import module_has_submodule
from django.contrib.admin.sites import AlreadyRegistered
from django.contrib import admin


def autodiscover():
    for app in settings.INSTALLED_APPS:
        mod = import_module(app)
        if not module_has_submodule(mod, 'models'):
            continue
        if module_has_submodule(mod, 'admin'):
            import_module('%s.admin' % app)
            continue
        models = import_module('%s.models' % app)
        for model in get_models(models):
            try:
                admin.site.register(model)
            except AlreadyRegistered:
                pass

Para usar basta adicionar o código em uma app do django, importar e chamá-la no lugar do autodiscover padrão do django no urls.py

blog comments powered by Disqus