diff options
| author | Brian Rosner <brosner@gmail.com> | 2009-12-22 18:29:00 +0000 |
|---|---|---|
| committer | Brian Rosner <brosner@gmail.com> | 2009-12-22 18:29:00 +0000 |
| commit | bcd9482a2019158f4580c24cd50ee8bfae9b2739 (patch) | |
| tree | af1de2b3e36b78d4fb820fe033acb4041eef09d0 /tests/regressiontests/admin_validation | |
| parent | 9233d0426537615e06b78d28010d17d5a66adf44 (diff) | |
Fixed #342 -- added readonly_fields to ModelAdmin. Thanks Alex Gaynor for bootstrapping the patch.
ModelAdmin has been given a readonly_fields that allow field and calculated
values to be displayed alongside editable fields. This works on model
add/change pages and inlines.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@11965 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/admin_validation')
| -rw-r--r-- | tests/regressiontests/admin_validation/models.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/regressiontests/admin_validation/models.py b/tests/regressiontests/admin_validation/models.py index eb53a9dd6e..682fca66de 100644 --- a/tests/regressiontests/admin_validation/models.py +++ b/tests/regressiontests/admin_validation/models.py @@ -19,6 +19,10 @@ class Song(models.Model): def __unicode__(self): return self.title + def readonly_method_on_model(self): + # does nothing + pass + class TwoAlbumFKAndAnE(models.Model): album1 = models.ForeignKey(Album, related_name="album1_set") @@ -110,6 +114,63 @@ Exception: <class 'regressiontests.admin_validation.models.TwoAlbumFKAndAnE'> ha >>> validate_inline(TwoAlbumFKAndAnEInline, None, Album) +>>> class SongAdmin(admin.ModelAdmin): +... readonly_fields = ("title",) + +>>> validate(SongAdmin, Song) + +>>> def my_function(obj): +... # does nothing +... pass +>>> class SongAdmin(admin.ModelAdmin): +... readonly_fields = (my_function,) + +>>> validate(SongAdmin, Song) + +>>> class SongAdmin(admin.ModelAdmin): +... readonly_fields = ("readonly_method_on_modeladmin",) +... +... def readonly_method_on_modeladmin(self, obj): +... # does nothing +... pass + +>>> validate(SongAdmin, Song) + +>>> class SongAdmin(admin.ModelAdmin): +... readonly_fields = ("readonly_method_on_model",) + +>>> validate(SongAdmin, Song) + +>>> class SongAdmin(admin.ModelAdmin): +... readonly_fields = ("title", "nonexistant") + +>>> validate(SongAdmin, Song) +Traceback (most recent call last): + ... +ImproperlyConfigured: SongAdmin.readonly_fields[1], 'nonexistant' is not a callable or an attribute of 'SongAdmin' or found in the model 'Song'. + +>>> class SongAdmin(admin.ModelAdmin): +... readonly_fields = ("title", "awesome_song") +... fields = ("album", "title", "awesome_song") + +>>> validate(SongAdmin, Song) +Traceback (most recent call last): + ... +ImproperlyConfigured: SongAdmin.readonly_fields[1], 'awesome_song' is not a callable or an attribute of 'SongAdmin' or found in the model 'Song'. + +>>> class SongAdmin(SongAdmin): +... def awesome_song(self, instance): +... if instance.title == "Born to Run": +... return "Best Ever!" +... return "Status unknown." + +>>> validate(SongAdmin, Song) + +>>> class SongAdmin(admin.ModelAdmin): +... readonly_fields = (lambda obj: "test",) + +>>> validate(SongAdmin, Song) + # Regression test for #12203/#12237 - Fail more gracefully when a M2M field that # specifies the 'through' option is included in the 'fields' or the 'fieldsets' # ModelAdmin options. |
