0

我希望我的图像 url 是 /img/1 和 /img/2,我认为使用分配给每个模型的自动递增 id 将是完美的,这样每个 url 都会有所不同。问题是模型的实例在保存之前没有 id。这是来自 models.py 的以下代码中的一个问题:

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,所以每个图像都以“None”或“None_1”等形式保存到我的 img 目录中。

4

1 回答 1

0

你不能。从文档中:

在大多数情况下,这个对象还没有保存到数据库中,所以如果它使用默认的 AutoField,它可能还没有主键字段的值。

我使用这样的功能:

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

    extension = os.path.splitext(filename)[1]
    return 'img/%s%s' % (uuid.uuid4(), extension) 
于 2013-01-24T08:09:15.390 回答