我希望我的图片网址是/ img / 1和/ img / 2,我认为使用分配给每个模型的自动增加的ID对于此是完美的,因此每个网址都会有所不同。问题是模型的实例在保存之前没有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保存pic时,每个实例的id都是None,因此每个图像都保存到我的img目录中,如“None”或“None_1”等等。
答案 0 :(得分: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)