Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中将CharField文件名转换为ImageFields_Python_Django_Django Models - Fatal编程技术网

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
本质上继承了前者的所有属性和方法。(见附件)