Python 在Django中将CharField文件名转换为ImageFields
我有一个模型:Python 在Django中将CharField文件名转换为ImageFields,python,django,django-models,Python,Django,Django Models,我有一个模型: class Photo(models.Model): filename = models.CharField(max_length=240) 以及相应的MySQL表,其中填充了文件名(从现有表复制) 在未来,我可能想上传新的照片到模型通过管理员。是否可以将当前模型演变为具有ImageFields的内容,并集成我的旧数据?如果模型中当前的文件名字段包含实际文件的完整路径,则可以将新字段(ImageField)添加到模型中,并使用South进行迁移,然后编写一个脚本来更新数
class Photo(models.Model):
filename = models.CharField(max_length=240)
以及相应的MySQL表,其中填充了文件名(从现有表复制)
在未来,我可能想上传新的照片到模型通过管理员。是否可以将当前模型演变为具有ImageFields的内容,并集成我的旧数据?如果模型中当前的
文件名
字段包含实际文件的完整路径,则可以将新字段(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
然后通过South删除旧的filename
字段。首先查看Django的FileField
了解更多信息,因为ImageField
本质上继承了前者的所有属性和方法。(见附件)