2011-08-05 48 views
0

我正在嘗試爲用戶上傳圖片時創建動態路徑。它的工作原理是這樣的:上傳圖片時創建動態路徑

查看:

photo = Photo(...) 
photo.save() 

photo.original.save(filename, content) 

型號:

album = models.ForeignKey(Album) 
original = models.ImageField(upload_to="photos/%s/o" % str(album.id), max_length=200) 

但是,當我嘗試這樣做,Django的說,沒辦法。

Exception Value:  
'ForeignKey' object has no attribute 'id' 

如何以這種方式訪問​​ForeignKey對象的模型成員?

謝謝。

回答

2

使用回調(贖回):https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField.upload_to

def fancy_path(instance, filename): 
    return 'fancy_path/file_%s.xml' % self.instance.album.id 

original = models.ImageField(upload_to=fancy_path, max_length=200) 
+1

這就是它。 @威利安撞上了頭部。您必須確保的唯一一件事就是您的對象具有處理該圖像的該專輯FK _before_的值。 –

+0

是的,我很小心那部分,因此上面的雙重保存。 –