在ModelForm中上传多个文件

时间:2014-09-14 18:25:48

标签: jquery django file-upload

我在Django中有一个简单的模型:

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是一个文件,我在客户端动态生成a"预览" of 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 个答案:

答案 0 :(得分:1)

如果您确实希望将缩略图生成集成到模型级别,请使用django-imagekit https://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中有很多用于动态生成缩略图的包(在模板级别上):