Login

ImageField for admin with thumbnail

Author:
semente
Posted:
June 19, 2009
Language:
Python
Version:
1.0
Score:
6 (after 6 ratings)

AdminImageWidget is a ImageField Widget for admin that shows a thumbnail.

Usage example on a form:

class IconForm(forms.ModelForm):
    icon = forms.ImageField(label='icon', widget=AdminImageWidget)
 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. Template tag - list punctuation for a list of items by shapiromatron 3 months, 1 week ago
  2. JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 3 months, 2 weeks ago
  3. Serializer factory with Django Rest Framework by julio 10 months, 1 week ago
  4. Image compression before saving the new model / work with JPG, PNG by Schleidens 11 months ago
  5. Help text hyperlinks by sa2812 11 months, 3 weeks 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))

#

Please login first before commenting.