防止Django中的媒体文件夹被新更新覆盖

时间:2018-08-21 15:28:49

标签: django django-models deployment

我有一个包含Image Field的Django模型,还有一个使用包含所有图像的模型实例的应用程序。我现在遇到的问题是我的数据和img本地链接位于我的AWS RDS数据库上,而包含模型图像的媒体文件夹却不在。因此,每次我部署新版本的应用程序时(我正在使用Beanstalk进行部署),我的媒体文件夹都会被清除干净,因此所有图像链接都会消失。

下面是我的模特:

class Item(models.Model):
    # Fields
    name = models.CharField(max_length=30, help_text="Enter item name")
    description = models.TextField(help_text='Enter a short description')
    image = models.ImageField(help_text='Upload item image', upload_to='image/item/',
                              default='image/demo.jpg')

    # Methods
    def __str__(self):
        return str(self.name)
    def get_absolute_url(self):
        return reverse('model-detail-view', args=[str(self.id)])

然后我用serve从Django检索图像。

url(r'^resource/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),

现在,解决此问题的最佳方法是什么?我不想将图像上传到另一台服务器,然后再链接回Django,最好是在从模型表单上传文件后将其保存到数据库中。

感谢所有反馈。

1 个答案:

答案 0 :(得分:0)

请参阅EB documentation on design considerations

  

Elastic Beanstalk应用程序在没有持久本地存储的Amazon EC2实例上运行。当Amazon EC2实例终止时,不会保存本地文件系统,并且新的Amazon EC2实例将从默认文件系统开始。

因此,您无法执行所要求的操作。您必须将文件上传到永久性存储系统; S3是显而易见的选择。