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