Кажется, что get_models и get_app больше не доступны в django 1.8.
Можно использовать следующее:
from django.contrib import admin
from django.apps import apps
app = apps.get_app_config('dashboard')
for model_name, model in app.models.items():
admin.site.register(model)
EXTENSION :Если вы хотите показать все или выбрать поля модели в виде сетки вместо представления столбцов в юникоде объектов модели, вы можете использовать это:
app = apps.get_app_config('your_app_name')
for model_name, model in app.models.items():
model_admin = type(model_name + "Admin", (admin.ModelAdmin,), {})
model_admin.list_display = model.admin_list_display if hasattr(model, 'admin_list_display') else tuple([field.name for field in model._meta.fields])
model_admin.list_filter = model.admin_list_filter if hasattr(model, 'admin_list_filter') else model_admin.list_display
model_admin.list_display_links = model.admin_list_display_links if hasattr(model, 'admin_list_display_links') else ()
model_admin.list_editable = model.admin_list_editable if hasattr(model, 'admin_list_editable') else ()
model_admin.search_fields = model.admin_search_fields if hasattr(model, 'admin_search_fields') else ()
admin.site.register(model, model_admin)
Что это делает, он расширяет класс ModelAdminна лету и устанавливает поле list_display
, которое необходимо для отображения данных модели в сеточном представлении в админке.Если вы перечислите нужные поля в вашей модели как admin_list_display
, то это займет одно из них или создаст кортеж из всех полей, доступных в модели, в противном случае.
Аналогичным образом могут быть и другие необязательные поля.установить, например list_filter
.
См. документацию django для получения дополнительной информации о list_display.