我在使用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中没有可用的缩略图:
以下是一些示例代码:
# 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',
)
任何想法,我做错了什么?
提前谢谢。
答案 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-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