ImageField for admin with thumbnail

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from django import forms
from django.utils.safestring import mark_safe

class AdminImageWidget(forms.FileInput):
    """
    A ImageField Widget for admin that shows a thumbnail.
    """

    def __init__(self, attrs={}):
        super(AdminImageWidget, self).__init__(attrs)

    def render(self, name, value, attrs=None):
        output = []
        if value and hasattr(value, "url"):
            output.append(('<a target="_blank" href="%s">'
                           '<img src="%s" style="height: 28px;" /></a> '
                           % (value.url, value.url)))
        output.append(super(AdminImageWidget, self).render(name, value, attrs))
        return mark_safe(u''.join(output))

More like this

  1. Image Preview on ImageField in admin by fyaconiello 2 years, 12 months ago
  2. django easy_thumbnails AdminImageWidget by livskiy 1 year, 6 months ago
  3. Admin Image Widget + easy-thumbnails by babu 2 years, 10 months ago
  4. Admin Image Widget by baumer1122 5 years, 8 months ago
  5. [UPDATE]Filter to resize a ImageField on demand by rafacdb 5 years, 8 months ago

Comments

yolk (on October 23, 2013):

Thank you for this! I'm using this with Sorl.Thumbnails for thumbs; it was easy to add (just two more lines!)

from sorl.thumbnail import get_thumbnail

class AdminImageWidget(forms.FileInput):

  """ A ImageField Widget for admin that shows a thumbnail. """

  def __init__(self, attrs={}):
    super(AdminImageWidget, self).__init__(attrs)

  def render(self, name, value, attrs=None):

    output = []
    if value and hasattr(value, 'url'):
      thumb = get_thumbnail(value, 'x28', crop='center', format='PNG')
      output.append('<a target="_blank" href="%s"><img src="%s" style="height: 28px;" /></a> '
                     % (value.url, thumb.url))
    output.append(super(AdminImageWidget, self).render(name, value, attrs))
    return mark_safe(u''.join(output))

#

(Forgotten your password?)