Index: django/db/models/fields/__init__.py
===================================================================
--- django/db/models/fields/__init__.py (revision 7922)
+++ django/db/models/fields/__init__.py (working copy)
@@ -901,8 +901,9 @@
return super(FloatField, self).formfield(**defaults)
class ImageField(FileField):
- def __init__(self, verbose_name=None, name=None, width_field=None, height_field=None, **kwargs):
+ def __init__(self, verbose_name=None, name=None, width_field=None, height_field=None, admin_preview=False, **kwargs):
self.width_field, self.height_field = width_field, height_field
+ self.admin_preview = admin_preview
FileField.__init__(self, verbose_name, name, **kwargs)
def get_manipulator_field_objs(self):
Index: django/contrib/admin/options.py
===================================================================
--- django/contrib/admin/options.py (revision 7922)
+++ django/contrib/admin/options.py (working copy)
@@ -173,7 +173,13 @@
return db_field.formfield(**kwargs)
# For FileFields and ImageFields add a link to the current file.
- if isinstance(db_field, models.ImageField) or isinstance(db_field, models.FileField):
+ if isinstance(db_field, models.ImageField):
+ if db_field.admin_preview:
+ kwargs['widget'] = widgets.AdminImageWidget
+ else:
+ kwargs['widget'] = widgets.AdminFileWidget
+ return db_field.formfield(**kwargs)
+ elif isinstance(db_field, models.ImageField) or isinstance(db_field, models.FileField):
kwargs['widget'] = widgets.AdminFileWidget
return db_field.formfield(**kwargs)
Index: django/contrib/admin/widgets.py
===================================================================
--- django/contrib/admin/widgets.py (revision 7922)
+++ django/contrib/admin/widgets.py (working copy)
@@ -93,6 +93,19 @@
output.append(super(AdminFileWidget, self).render(name, value, attrs))
return mark_safe(u''.join(output))
+class AdminImageWidget(AdminFileWidget):
+ """
+ Just like AdminFileWidget but adds image to admin page.
+ """
+ def render(self, name, value, attrs=None):
+ from django.conf import settings
+ output = []
+ if value:
+ output.append('
' % (settings.MEDIA_URL, value))
+ output.append(super(AdminImageWidget, self).render(name, value, attrs))
+ return mark_safe(u''.join(output))
+
+
class ForeignKeyRawIdWidget(forms.TextInput):
"""
A Widget for displaying ForeignKeys in the "raw_id" interface rather than