Wydaje się, że get_models i get_app nie są już dostępne w django 1.8.
Poniższa można stosować:
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)
ROZSZERZENIE: Jeśli chcesz, aby pokazać wszystkie lub zaznacz pola modelu w postaci siatki zamiast pojedynczej reprezentacji kolumna unicode modelowych obiektów można użyć tego:
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)
Co to robi to, że rozszerza klasę ModelAdmin w locie i ustawia pole list_display
który jest wymagany do wyświetlania dane modelu w reprezentacji siatki w administratorze. Jeśli podasz listę żądanych pól w swoim modelu jako admin_list_display
, to zajmie to, lub wygeneruje krotkę wszystkich pól dostępnych w modelu, w przeciwnym razie.
Inne opcjonalne pola mogą być podobnie ustawione, na przykład list_filter
.
Aby uzyskać więcej informacji na temat wyświetlania listy, zobacz stronę django documentation.
Czy ten fragment robi to, co chcesz: http://djangosnippets.org/snippets/2066/? – arie
Dzięki. Przeglądanie kodu bardzo pomogło. – hobbes3