Fixed #766 -- Custom methods in admin.list_display can now have an allow_tags attribute, which doesn't strip tags in the methods' output. Thanks, plisk

git-svn-id: http://code.djangoproject.com/svn/django/trunk@1174 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2005-11-11 17:15:24 +00:00
parent cb222e4d4e
commit 632b63ad76
1 changed files with 7 additions and 1 deletions

View File

@ -388,10 +388,16 @@ def change_list(request, app_label, module_name):
except meta.FieldDoesNotExist: except meta.FieldDoesNotExist:
# For non-field list_display values, the value is a method # For non-field list_display values, the value is a method
# name. Execute the method. # name. Execute the method.
func = getattr(result, field_name)
try: try:
result_repr = strip_tags(str(getattr(result, field_name)())) result_repr = str(func())
except ObjectDoesNotExist: except ObjectDoesNotExist:
result_repr = EMPTY_CHANGELIST_VALUE result_repr = EMPTY_CHANGELIST_VALUE
else:
# Strip HTML tags in the resulting text, except if the
# function has an "allow_tags" attribute set to True.
if not getattr(func, 'allow_tags', False):
result_repr = strip_tags(result_repr)
else: else:
field_val = getattr(result, f.attname) field_val = getattr(result, f.attname)
# Foreign-key fields are special: Use the repr of the # Foreign-key fields are special: Use the repr of the