Sorl缩略图在AdminImageMixin中没有显示拇指

时间:2011-03-27 15:39:57

标签: django sorl-thumbnail django-grappelli

我在使用django-grappeli和sorl-thumbnail时遇到了Django 1.3的问题。 我有一个项目使用官方sorl-thumbnails文档中的代码:

# 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中没有可用的缩略图:

  • 将图片上传到正确的位置
  • 它将正确的文本放在数据库字段中(uploads / + 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',
)

任何想法,我做错了什么?

提前谢谢。

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我遇到了同样的问题,结果我安装的PIL没有jpeg支持来制作实际的缩略图,尽管它从未显示任何错误。 这就是我修复它的方法:

  • 安装jpeg支持

    sudo apt-get install libjpeg libjpeg-dev
    

在MAC上:

brew install jpeg
  • 重新安装PIL

    pip install -I PIL
    

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

答案 2 :(得分:0)

使用调试器检查表单字段是否使用了正确的小部件。

当我从3个不同的管理类继承时,我遇到了同样的问题:

  • django-mptt:MPTTModelAdmin
  • django-modeltranslation:TranslationAdmin
  • sorl-thumbnail:AdminImageMixin

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

我将小部件强制到get_form函数上的AdminImageWidget,如下所示:

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是可选的。

答案 3 :(得分:0)

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

如果您获得许可问题,请查看 https://stackoverflow.com/a/41541666