models.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. """
  2. Tests for various ways of registering models with the admin site.
  3. """
  4. from django.db import models
  5. from django.contrib import admin
  6. class Person(models.Model):
  7. name = models.CharField(max_length=200)
  8. class Place(models.Model):
  9. name = models.CharField(max_length=200)
  10. __test__ = {'API_TESTS':"""
  11. # Bare registration
  12. >>> site = admin.AdminSite()
  13. >>> site.register(Person)
  14. >>> site._registry[Person]
  15. <django.contrib.admin.options.ModelAdmin object at ...>
  16. # Registration with a ModelAdmin
  17. >>> site = admin.AdminSite()
  18. >>> class NameAdmin(admin.ModelAdmin):
  19. ... list_display = ['name']
  20. ... save_on_top = True
  21. >>> site.register(Person, NameAdmin)
  22. >>> site._registry[Person]
  23. <regressiontests.admin_registration.models.NameAdmin object at ...>
  24. # You can't register the same model twice
  25. >>> site.register(Person)
  26. Traceback (most recent call last):
  27. ...
  28. AlreadyRegistered: The model Person is already registered
  29. # Registration using **options
  30. >>> site = admin.AdminSite()
  31. >>> site.register(Person, search_fields=['name'])
  32. >>> site._registry[Person].search_fields
  33. ['name']
  34. # With both admin_class and **options the **options override the fields in
  35. # the admin class.
  36. >>> site = admin.AdminSite()
  37. >>> site.register(Person, NameAdmin, search_fields=["name"], list_display=['__str__'])
  38. >>> site._registry[Person].search_fields
  39. ['name']
  40. >>> site._registry[Person].list_display
  41. ['action_checkbox', '__str__']
  42. >>> site._registry[Person].save_on_top
  43. True
  44. # You can also register iterables instead of single classes -- a nice shortcut
  45. >>> site = admin.AdminSite()
  46. >>> site.register([Person, Place], search_fields=['name'])
  47. >>> site._registry[Person]
  48. <django.contrib.admin.sites.PersonAdmin object at ...>
  49. >>> site._registry[Place]
  50. <django.contrib.admin.sites.PlaceAdmin object at ...>
  51. """}