我没有测试这些代码,但我可以指导您从哪里开始。
我建议你在模型的保存函数中编写解压代码。这是最简单的方法,但不是最好的方法。
Django admin 可以像自定义 django admin 一样处理多种表单。
我希望你的模型有点像这些
from django.db import models
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location="/var/www/yoursite/private/")
class SetOfFiles(models.Model):
name = models.CharField('set name'), max_length=225, null=False, blank=False)
class File(models.Model):
set = models.ForeignKey(SetOfFiles, verbose_name=_('set'))
file = models.FileField(storage=fs)
def save(self, *args, **kwargs):
if not self.id:
... unzip your file ...
... encrypt your file if necessary ...
super(File, self).save(*args, **kwargs)
在相关应用程序中创建 admin.py 自定义您的管理员以处理多个插入:
from django.contrib import admin
class FileInline(admin.TabularInline):
model = File
class SetOfFilesAdmin(admin.ModelAdmin):
list_display = ('name',)
inlines = [FileInline]
admin.site.register(SetOfFiles, SetOfFilesAdmin)
这里还有解压缩使用 FileBrowser 上传的 .zip 文件 http://djangosnippets.org/snippets/1893/代码,但由于使用 FileBrowser 应用程序,它可能有点复杂。您只需使用以下命令即可解压缩文件zipfile python 模块 http://docs.python.org/library/zipfile.html。
您也可以使用PyCrypto https://www.dlitz.net/software/pycrypto/AES 加密。