2009-10-12 99 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