Как я могу использовать DataMigration Юга, чтобы изменить внутреннее хранилище экземпляра ImageField модели Django?

Я пытаюсь перенести некоторые модели ImageFields на использование S3BotoStorage хранилища данных из django-storages. В рамках этого процесса я изменил объявление ImageField моей модели, включив в него аргумент storage=instance_of_s3botostorage и новые экземпляры моей модели, которые сохраняют изображение атрибуту ImageField теперь хранится в S3 - как и предполагалось.

Я попытался перенести существующие экземпляры модели на хранение их данных в S3, поэтому написал DataMigration на юг так:

def forwards(self, orm):
    "upload ImageField file to S3 if it's not already in there"
    for mymodel in orm.MyModel.objects.all():
        if mymodel.logo_image and not isinstance(mymodel.logo_image.storage, S3BotoStorage):
            print "uploading %s to S3" % mymodel.logo_image
            file_contents = ContentFile(mymodel.logo_image.read())
            mymodel.logo_image.save(mymodel.logo_image.name, file_contents)
            mymodel.save()

но это явно не имеет ожидаемого эффекта, потому что файл изображения просто сохраняется с использованием старого storage бэкэнда - что имеет смысл учитывая, что save () является методом FieldFile, принадлежащим FileField

Итак, как переместить /изменить хранилище файлов на экземпляре модели?

4 голоса | спросил markhellewell 23 AM00000090000004131 2010, 09:44:41

2 ответа


0

Итак, выясняется, что конкретное хранилище, используемое для файлов, не хранится в базе данных. «миграция» - это просто вопрос изменения определения модели, после чего, за исключением использования API подсистемы хранения, просто загружайте файлы в новые места хранения.

ответил markhellewell 23 AM00000090000003331 2010, 09:58:33
0

Я бы посмотрел на систему, подобную этой, для вашей проблемы. http://github.com/seanbrant/django-queued-storage

ответил kkubasik 23 AM000000110000005731 2010, 11:28:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132