2009-10-12 97 views
1

我有一个图像字段(自定义ThumbnailImageField类型)的Django应用程序,该图像字段根据图像所附的项目的标题,类型和国家自动生成图像的文件路径(upload_to = get_ image_path )。具体方法如下:它在Django中,动态路径更改时如何移动图像?

def get_image_path(instance, filename): 
    dir = 'images' 
    subdir = instance.get_type_display() 
    sub_subdir = 'other' 
    if instance.country: 
     sub_subdir = instance.country.name 
    name = instance.name 
    extension = filename.split('.')[-1] 

    return "%s/%s/%s/%s.%s" % (dir, subdir, sub_subdir, name, extension) 

的伟大工程,除了一种情况:当我重新命名的项目,改变它的国家,或改变它的类别中,图像变成一个死链接,因为它会产生一个新的形象而不移动原始文件。

于是,神奇的问题:

有一些保存在Django功能,我可以挂接到和覆盖,这将让我有原始的对象和建议值,并比较他们,所以我知道那里的图像路径是否需要去哪里(然后使用此信息在代码中移动/重命名)?

回答

3

你可能要考虑的信号:

http://docs.djangoproject.com/en/dev/topics/signals/

尤其是django.db.models.signals.pre_save信号:

http://docs.djangoproject.com/en/dev/howto/custom-model-fields/#pre_save

+2

同意,但我认为解决方法是为影响路径 – Jiaaro 2009-10-12 18:36:15

+0

的模型使用post_save信号处理程序,无论哪种方式,都可以让我移动文件。更新文件路径数据库字段是一个单独的问题,并不重要。谢谢。 – 2009-10-14 12:52:42