Python 在保存模型之前使用自动字段生成URL
我希望我的图像url为/img/1和/img/2,我认为使用分配给每个模型的自动递增id将非常适合这一点,因此每个url都会有所不同。问题是模型的实例在保存之前没有id。这是models.py的以下代码中的一个问题:Python 在保存模型之前使用自动字段生成URL,python,django,image,url,Python,Django,Image,Url,我希望我的图像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
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,因此每个图像都以“None”或“None_1”等形式保存到我的img目录中。您不能这样做。从:
在大多数情况下,此对象不会保存到数据库中
但是,如果它使用默认的自动字段,它可能还没有
其主键字段的值
我使用如下函数:
import uuid
def update_filename(instance, filename):
""" Rename picture """
extension = os.path.splitext(filename)[1]
return 'img/%s%s' % (uuid.uuid4(), extension)
看看这个,我本来打算这么做的,但问题是url太长了。为每个用户创建一个目录,比如img/user1/1291219.jpg,会给站点带来很大的压力吗?这样,我可以将随机生成的数字减少到两位数,因为没有人会从一个帐户上传那么多图片到我的网站