2015-06-22 2 views
0

На данный момент я нахожусь на своем пути, используя django-imagekit, чтобы показывать эскизы в изображении с большим размером изображения приложения галереи. Для этого я использую «model-method», значит, я создаю миниатюры в модели.Ошибка при использовании django-admin-multiupload и django-imagekit вместе

Теперь с учетом удобства администратора (загружайте сразу несколько изображений), я также хочу реализовать многозадачную форму в режиме администратора. Чтобы немного облегчить работу, я попытался использовать приложение, которое я нашел в GitHub, django-admin-multiupload (я не могу ссылаться на него из-за моей низкой репутации, но это точное имя для него на GitHub). Когда я использую только django-imagekit, все работает отлично, и я получаю красивые миниатюры, как и ожидалось. Когда я использую только django-admin-multiupload, все работает отлично, и я могу загружать несколько изображений, как и ожидалось.

Проблема возникает, когда я использую оба приложения одновременно. Multiupload работает все еще отлично, но когда я открываю представление и фактически реализую миниатюру (только с использованием обоих и не реализуя миниатюру, отлично работает), где должны отображаться миниатюры, я получаю следующую ошибку:

OSError в/галерея/- декодер JPEG не доступен

Вы можете увидеть полную ошибку здесь: http://pastebin.com/gtVYEeG7 Моя путаница начинается при запуске только одно приложение, и она работает. Насколько мне известно, все проблемы PIL не могут присутствовать. Чтобы предоставить больше информации: Я использую virtualENV со следующим списком пакетов:

  • пип
  • Джанго
  • PIL
  • pilkit
  • Джанго-imagekit
  • django- amdin-multupload

Также необходимо предоставить некоторые из моих lementet код, вот он:

Файл: models.py

class Image(models.Model): 
"""the model for the images""" 
# the foreign key from the event 
event = models.ForeignKey('Event', related_name='images', 
          blank=True, null=True) 
# the image itself 
# file = models.FileField('File', upload_to='gallery/images/') 
file = models.ImageField('File', upload_to='gallery/images/') 

image_thumbnail = ImageSpecField(source='file', 
           processors=[ 
            ResizeToFill(300, 250) 
           ], 
           format='JPEG', 
           options={'quality': 40}) 

# image title to represent it in the admin interface 
image_name = models.CharField(max_length=35, default='img') 
# publication date of the image 
pub_date = models.DateTimeField('date published', 
       auto_now_add=True) 

# for a better representation of the image 
def __str__(self): 
    return self.image_name 

Файл: admin.py

(это один в основном, как предложено в примере с Джанго -admin-multipupload repo, можно посмотреть здесь: https://github.com/gkuhn1/django-admin-multiupload/blob/master/example/gallery/admin.py)

from django.contrib import admin 
from django.shortcuts import get_object_or_404 

from gallery.models import Event, Image 

from multiupload.admin import MultiUploadAdmin 
# Register your models here. 

# allows inline add of single images 
class ImageInlineAdmin(admin.TabularInline): 
    model = Image 

# used to define the process_uploaded_file function 
# so it will not be duplicated in the Admin-Classes 
class GalleryMultiuploadMixing(object): 
    def process_uploaded_file(self, uploaded, event, request): 
     image = event.images.create(file=uploaded) 
     return { 
      'url': image.file.url, 
      'thumbnail': image.file.url, 
      'id': image.id, 
      'name': image.image_name 
     } 

# admin class for event model 
class EventAdmin(GalleryMultiuploadMixing, MultiUploadAdmin): 
    inlines = [ImageInlineAdmin,] 
    multiupload_form = True 
    multiupload_list = False 

    def delete_file(self, pk, request): 
     obj = get_object_or_404(Image, pk=pk) 
     return obj.delete() 
admin.site.register(Event, EventAdmin) 

# admin class for image model 
class ImageAdmin(GalleryMultiuploadMixing, MultiUploadAdmin): 
    multiupload_form = False 
    multiupload_list = True 

admin.site.register(Image, ImageAdmin) 

файла: index.html

<td><img class="img-responsive" src="{{ image.image_thumbnail.url }}" /></td> 

Если есть потребность в дополнительной информации, пожалуйста, не стесняйтесь спрашивать. Спасибо заранее, и я ценю любую помощь.

Edit: Сегодня я попробовал другой путь, и признал, что ошибки появляются только к изображениям, которые были загружены с Джанго-админ-Multiupload и нет, если только изображения показали, что были загружены с обычным способом.Возможно, это поможет найти решение.

+0

Кроме того, ссылка на django-admin-multiupload repo на GitHub: [django-admin-multiupload] (https://github.com/gkuhn1/django-admin-multiupload) – mspl

ответ

0

Эта ошибка была вызвана, в основном, сломанной базой данных, которая может быть исправлена, возвращаясь к старой версии и переопределяя новый код. Таким образом, нет проблем в django-admin-multiupload или django-imagekit.

Смежные вопросы