Sorl thumbnail不显示拇指在AdminImageMixin

问题描述:

我遇到Django 1.3使用django-grappeli和sorl-thumbnail的问题。 我有一个使用此代码从官方SORL-缩略图文档项目:Sorl thumbnail不显示拇指在AdminImageMixin

# myapp/admin.py 
from django.contrib import admin 
from myapp.models import MyModel 
from sorl.thumbnail.admin import AdminImageMixin 

class MyModelAdmin(AdminImageMixin, admin.ModelAdmin): 
    pass 

该项目与调试服务器工作正常,一个可爱的小缩略图显示在管理员的变化形式。

然而,在另一个项目中,我通过WSGI服务我的项目,我有3个独立的域:

www.example.com 
media.example.com (that's serving user uploaded files) 
static.example.com (that's serving static files) 

然而,在这个项目中,AdminImageMixin工作正常,除了不拥有缩略图在changeform可用一个模型:

  • 它上传在正确的位置
  • 它把正确的文本数据库中的字段(上传/ + picture_name.jpg)照片(我验证了这个与phpMyAdmin)
  • 不显示在除了浏览按钮形式的任何缩略图(就像我已经习惯了)

下面是一些示例代码:

# models.py 
class Category(models.Model): 
    name = models.CharField(max_length=200, verbose_name='name', help_text='Name of category') 
    description = models.TextField(verbose_name='Description', help_text='You can use Textile') 
    icon = ImageField(upload_to='uploads/', blank=True, null=True) 

# admin.py 
class CategoryAdmin(AdminImageMixin, admin.ModelAdmin): 
    pass 
admin.site.register(Category, CategoryAdmin) 

# settings.py 

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'grappelli', 
    # Uncomment the next line to enable the admin: 
    'django.contrib.admin', 
    'django_evolution', 
    'django_extensions', 
    'sorl.thumbnail', 
    # Uncomment the next line to enable admin documentation: 
    # 'django.contrib.admindocs', 
) 

任何IDEEA我做错了吗?

预先感谢您。

您是否记得将sorl.thumbnail放入您的INSTALLED_APPS中,并在其后同步数据库。如果你没有没有关键值对的表,它不会工作。我想你正在使用默认数据库作为你的关键值存储,而不是redis。

我遇到了同样的问题,事实证明,我安装的PIL没有jpeg支持来制作实际的缩略图,尽管它从未显示任何错误。 这是我如何固定它:

  • 安装支持JPEG

    sudo apt-get install libjpeg libjpeg-dev 
    

在MAC:

brew install jpeg 
  • 重新安装PIL

    pip install -I PIL 
    

重新编译后,它应该显示支持jpeg,刷新管理页面,你应该看到缩略图。

如果表单字段使用正确的小部件,请使用调试器进行检查。

我已经当我是从3个不同的管理类继承了同样的问题:

  • Django的MPTT:MPTTModelAdmin
  • Django的modeltranslation:TranslationAdmin
  • SORL-缩略图:AdminImageMixin

我很确定(在我的情况下)django-modeltranslation覆盖了sorl-thumbnail的行为,从Ad中更改ImageField字段的“widget”属性minImageWidget。

我强迫小部件AdminImageWidget在这样的get_form功能:

def get_form(self, request, obj=None, **kwargs): 
    kwargs = self._do_get_form_or_formset(request, obj, **kwargs) 
    form = super(CategoryAdmin, self).get_form(request, obj, **kwargs) 

    form.base_fields['background'].widget = AdminImageWidget() 

    return form 

在使用混合AdminImageMixin这一点是可选的。

./manage.py makemigrations缩略图 ./manage.py迁移缩略图

如果得到许可问题看 https://stackoverflow.com/a/41541666