我知道这里有一个非常相似的帖子,但是我找不到解决我的问题的方法。
我需要重命名一个保存在Django模型FileField中的文件。
我尝试了这个
os.rename(old_path, new_path)
mod.direct_file = File(open(new_path))
mod.save()
而且这个
mod.direct_file.save(new_path, File(open(old_path)))
os.remove(old_path)
还有许多其他方法,但似乎没有什么有用。无论使用哪种方式创建新文件,文件字段中的数据都不会改变。
编辑:问题已解决
os.rename(old_path, new_path)
cursor = connection.cursor()
cursor.execute("UPDATE mods_mod SET direct_file = %s WHERE id = %s", [new_name, mod.id])
transaction.commit_unless_managed()
FileSystemStorage
时才能正常工作。 - WhyNotHugo