From 7b3cf13d3249d4e4bcf152e27631ea7ec4a55412 Mon Sep 17 00:00:00 2001 From: Jacob Kaplan-Moss Date: Wed, 23 Jul 2008 18:58:06 +0000 Subject: Improved admin model registration options: you can now register using register(Model, **options) and even register(Model, ModelAdmin, **options). This isn't documented yet -- a much expanded version of docs/admin.txt is on the way. git-svn-id: http://code.djangoproject.com/svn/django/trunk@8063 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- .../regressiontests/admin_registration/__init__.py | 0 tests/regressiontests/admin_registration/models.py | 64 ++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 tests/regressiontests/admin_registration/__init__.py create mode 100644 tests/regressiontests/admin_registration/models.py (limited to 'tests') diff --git a/tests/regressiontests/admin_registration/__init__.py b/tests/regressiontests/admin_registration/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regressiontests/admin_registration/models.py b/tests/regressiontests/admin_registration/models.py new file mode 100644 index 0000000000..fdfa3691b8 --- /dev/null +++ b/tests/regressiontests/admin_registration/models.py @@ -0,0 +1,64 @@ +""" +Tests for various ways of registering models with the admin site. +""" + +from django.db import models +from django.contrib import admin + +class Person(models.Model): + name = models.CharField(max_length=200) + +class Place(models.Model): + name = models.CharField(max_length=200) + +__test__ = {'API_TESTS':""" + + +# Bare registration +>>> site = admin.AdminSite() +>>> site.register(Person) +>>> site._registry[Person] + + +# Registration with a ModelAdmin +>>> site = admin.AdminSite() +>>> class NameAdmin(admin.ModelAdmin): +... list_display = ['name'] +... save_on_top = True + +>>> site.register(Person, NameAdmin) +>>> site._registry[Person] + + +# You can't register the same model twice +>>> site.register(Person) +Traceback (most recent call last): + ... +AlreadyRegistered: The model Person is already registered + +# Registration using **options +>>> site = admin.AdminSite() +>>> site.register(Person, search_fields=['name']) +>>> site._registry[Person].search_fields +['name'] + +# With both admin_class and **options the **options override the fields in +# the admin class. +>>> site = admin.AdminSite() +>>> site.register(Person, NameAdmin, search_fields=["name"], list_display=['__str__']) +>>> site._registry[Person].search_fields +['name'] +>>> site._registry[Person].list_display +['__str__'] +>>> site._registry[Person].save_on_top +True + +# You can also register iterables instead of single classes -- a nice shortcut +>>> site = admin.AdminSite() +>>> site.register([Person, Place], search_fields=['name']) +>>> site._registry[Person] + +>>> site._registry[Place] + + +"""} -- cgit v1.3