2014-09-14 2 views
0

У меня есть простая модель в Django:Загрузка несколько файлов в ModelForm

class Test(models.Model): 
    user = models.ForeignKey(User, null=True, blank=True) 
    title = models.CharField(max_length=180, unique=True) 
    file1 = models.FileField(upload_to=download_loc) 
    preview = models.FileField(upload_to=preview_loc) 

file1 это файл, и я генерировать динамически на стороне клиента «Предварительный просмотр» из file1 (JPG изображений).

Я пытаюсь загрузить их обоих в ту же форму, но я не могу найти простой способ сделать это. Как я могу сделать это с помощью JQuery?

Это класс для формы у меня есть:

class TestForm(ModelForm): 
    class Meta: 
     model = Test 
     fields = ('title', 'file1') # I don't want to put preview here because it should be done without the user intervention (I don't want the user to see a button with choose file for the preview) 

Спасибо большое!

ответ

1

Если вы действительно хотите межтереть уменьшенное поколение на уровне модели, используйте django-imagekithttps://pypi.python.org/pypi/django-imagekit

Пример:

from django.db import models 
from imagekit.models import ImageSpecField 
from imagekit.processors import ResizeToFill 

class Profile(models.Model): 
    avatar = models.ImageField(upload_to='avatars') 
    avatar_thumbnail = ImageSpecField(source='avatar', 
             processors=[ResizeToFill(100, 50)], 
             format='JPEG', 
             options={'quality': 60}) 

profile = Profile.objects.all()[0] 
print profile.avatar_thumbnail.url # > /media/CACHE/images/982d5af84cddddfd0fbf70892b4431e4.jpg 
print profile.avatar_thumbnail.width # > 100 

Хотя, в большинстве случаев вы не должны добавлять предпросмотр модель, поскольку существует множество пакетов для создания эскизов «на лету» (на уровне шаблона) в Django: