Class X(models.Model): zip_file = models.FileField()
现在,这个zip_file是一个包含任意数量图像的zip。我希望能够提取所有图像并保存(到DB)相同 X对象,即&#34; < strong>主键&#34;是一样的。
据我所知,文件存储在系统中,只有参考文件存储在数据库中,我很好。
我不确定解压缩文件的最佳做法是什么 服务器并将它们逐个保存到数据库中。
我有一个天真的想法是使用&#34; 验证器&#34;检查文件并将其保存到数据库,但不确定这是否是最佳做法。
感谢任何帮助或建议。 :)
答案 0 :(得分:0)
根据zip文件中的图像要求和数量,有几种不同的方法可以解决这个问题。我将做出以下假设:
在这种情况下,您可以按如下方式设置模型格式。完成文件上载过程后,您可以触发信号或后台任务来解析zip文件,并为每个图像文件创建一个通过外键与zip文件相关的单独对象。这样您就可以轻松获取所有文件,而无需创建大量图像字段。
[models.py]
class X(models.Model):
zip_file = models.FileField()
class XImages(models.Model):
image = models.ImageField()
x = models.ForeignKey(X)
如果您实际上并不关心保留zip文件,那么您可以执行类似的操作,但不是将对象保存在表单帖子上,您可以简单地将其提取出来,然后将图像保存在单独的课程。
如果每个zip文件中有静态数量的图像,那么您只需在模型本身中创建特定数量的ImageField即可。