CharField имена файлов в ImageFields в Джанго - PullRequest
2 голосов
/ 15 августа 2011

У меня есть модель:

class Photo(models.Model):
    filename = models.CharField(max_length=240)

И соответствующая таблица MySQL, заполненная именами файлов (скопированная из существующей таблицы).

В будущем я могу захотеть загрузить новые фотографии в модель через администратора. Можно ли превратить текущую модель в нечто с помощью ImageFields и интегрировать мои устаревшие данные?

1 Ответ

1 голос
/ 15 августа 2011

Возможно, если текущее поле filename в вашей модели содержит полный путь к фактическому файлу, вы можете добавить новое поле (ImageField) к вашей модели и перенести его с помощью South, а затем написать скрипт для обновленияваши данные.

Пример скелета,

from django.core.files import File

# assuming your updated model looks like:
# class Photo(models.Model):
#     filename = models.CharField(max_length=240)
#     image = models.ImageField(max_length=240)

photos = Photo.objects.all()
for p in photos:
    f = open(p.filename)
    myimage = File(f)
    p.image.save(image_name, myimage) # name, content

А затем удалите старое поле filename через Юг.Сначала взгляните на FileField в Django для получения дополнительной информации, поскольку ImageField по существу наследует все атрибуты и методы первого.(см. https://docs.djangoproject.com/en/1.3/ref/models/fields/#django.db.models.FileField)

...