Skip to main content
 首页 » 编程设计

python之CharField 文件名到 Django 中的 ImageFields

2025年05月04日26lexus

我有一个模型:

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

以及一个相应的 MySQL 表,其中填充了文件名(从现有表中复制)。

将来我可能想通过管理员将新照片上传到模型。是否可以将当前模型发展为具有 ImageFields 的模型并集成我的遗留数据?

请您参考如下方法:

有可能,假设您模型中的当前 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 

然后通过 South 删除旧的 filename 字段。请先查看 Django 的 FileField 以获得更多信息,因为 ImageField 本质上继承了前者的所有属性和方法。 (参见 https://docs.djangoproject.com/en/1.3/ref/models/fields/#django.db.models.FileField)