В settings.py
у меня есть:Указывая на несколько ведер S3 в s3boto
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'xxxxxxxxxxxxx'
AWS_SECRET_ACCESS_KEY = 'xxxxxxxxxxxxx'
AWS_STORAGE_BUCKET_NAME = 'static.mysite.com'
Это указывает на мой S3 ведро static.mysite.com
и отлично работает, когда я manage.py collectstatic
, она будет загружать все статические файлы в моем ведре. Тем не менее, у меня есть еще одно ведро, которое я использую для разных целей и хотели бы использовать в определенных областях веб-сайта, например, если у меня есть модель, как это:
class Image(models.Model):
myobject = models.ImageField(upload_to='my/folder')
Теперь, когда Image.save()
вызывается, он все равно будет загрузите файл в ведро S3 в AWS_STORAGE_BUCKET_NAME
, однако я хочу, чтобы этот Image.save()
указывал на другой ведро S3. Любой чистый способ сделать это? Я не хочу менять settings.py
во время выполнения и не применять какие-либо действия, которые нарушают основные принципы django, то есть иметь подключаемое легко изменяемое бэкэнд-хранилище.
Ницца! Где вы рекомендуете поместить этот класс? – abstractpaper
Где-то в вашем проекте. Обычно у меня есть отдельное приложение, где я сохраняю все специфические для проекта вещи. –
Основное приложение это, спасибо большое. – abstractpaper