2011-03-27 11 views
7

Tengo problemas con Django 1.3 con django-grappeli y sorl-thumbnail. Tengo un proyecto que utiliza este código a partir de los SORL-miniaturas de documentos oficiales:Miniatura de Sorl que no muestra el pulgar en 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 

Este proyecto funciona bien con el servidor de depuración y una pequeña miniatura aparece en el formulario de cambio de la administración.

Sin embargo, en otro proyecto, estoy sirviendo a mi proyecto a través de WSGI y tengo 3 dominios separados:

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

Sin embargo, en este proyecto, la AdminImageMixin funciona bien, excepto que no miniatura está disponible en el changeform para un modelo:

  • Se carga la imagen en el lugar correcto
  • pone el texto correcto en el campo de la base de datos (archivos/+ picture_name.jpg) (i verificado esto con phpmyadmin)
  • Se no muestra cualquier miniatura en forma además del botón de navegación (como yo estoy acostumbrado a)

Aquí hay un código de ejemplo:

# 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', 
) 

Cualquier idea pra lo que estoy haciendo mal?

Gracias de antemano.

Respuesta

0

¿Recordó poner el sorl.thumbnail en su INSTALLED_APPS y sincronizar la base de datos después de él. En caso de que no lo haya, no hay una tabla para los pares clave de valores y no funcionará. Supongo que está utilizando la base de datos predeterminada como almacenamiento de valor clave, no redis.

0

Me encuentro con los mismos problemas, resulta que el PIL que instalé no tenía soporte jpeg para hacer las miniaturas reales, aunque nunca mostró ningún error. Esta es la forma en que me fijo:

  • instalar apoyo jpeg

    sudo apt-get install libjpeg libjpeg-dev 
    

en Mac:

brew install jpeg 
  • vuelva a instalar PIL

    pip install -I PIL 
    

Después de volver a compilar sí de que el apoyo está disponible jpeg, refrescar la página de administración y podrá ver las imágenes en miniatura.

0

Consulte con un depurador si el campo de formulario está utilizando el widget correcto.

que tenían el mismo problema cuando yo estaba heredando de 3 diferentes clases de administración:

  • django-MPTT: MPTTModelAdmin
  • django-modeltranslation: TranslationAdmin
  • SORL-miniatura: AdminImageMixin

Estoy bastante seguro de que (en mi caso) django-modeltranslation está anulando el comportamiento de sorl-thumbnail cambiando el atributo "widget" del campo ImageField del anuncio minImageWidget.

Forcé el widget para AdminImageWidget en la función get_form como esto:

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 

En este punto usando el AdminImageMixin de mezclado es opcional.

Cuestiones relacionadas