2013-01-24 26 views
0

我希望我的圖像網址爲/ img/1和/ img/2,並且我認爲使用分配給每個模型的自動遞增的ID對於此來說是完美的,所以每個網址都會有所不同。問題是模型的一個實例在保存之前沒有一個id。這是從models.py下面的代碼中的問題:在保存模型之前使用Autofield生成URL

def update_filename(instance, filename): 
    a = type(instance.id) 
    if a is not int: 
     a = 1 
    else: 
     a = instance.id 
    path = "img" + "/" + str(a) + ".jpg" 
    return path 

class User_Image(models.Model): 
    image = models.ImageField(upload_to=update_filename) 

有關如何解決此問題的任何建議?當django保存圖片時,每個實例的id都是None,因此每張圖片都會保存到我的img目錄中,如「None」或「None_1」等等。

+0

看這個https://code.djangoproject.com/ticket/12009 –

回答

0

你不能。從documentation

在大多數情況下,這個對象將不會被保存到數據庫 呢,所以如果使用默認的下拉列表AutoField,它可能尚未有其主鍵字段中的值 。

我用的功能是這樣的:

import uuid 
def update_filename(instance, filename): 
    """ Rename picture """ 

    extension = os.path.splitext(filename)[1] 
    return 'img/%s%s' % (uuid.uuid4(), extension) 
+0

我要做到這一點,但問題是該網址極爲那麼長。會爲每個用戶製作一個目錄,例如img/user1/1291219.jpg會對網站造成很大壓力?這樣,我可以將隨機生成的數字降低到幾位數,因爲沒有人會從一個帳戶上傳許多照片到我的網站 – user1829924

相關問題