Django 如何用自增 id 作为图片的名

2020-01-05 15:05:09 +08:00
 dolaxi

我本意是想图片上传的时候,用数据库自增 id 作为图片的名称

models.py


class Goods(models.Model):
    image = models.ImageField(upload_to=pic_path,verbose_name='封面图')
    create_time = models.DateTimeField(auto_now_add=True,verbose_name='创建时间')
 
 
def pic_path(instance, filename):
    #自定义保存路径和文件名

    # 源文件名后缀
    ext = filename.split('.')[-1]
    # 文件名
    # new_name = datetime.now().strftime('%Y%m/')+shortuuid.uuid()
    # new_name =instance.id #无效
    new_name =

    # 拼接文件名和后缀
    path = new_name + '.' + ext
    return path


1556 次点击
所在节点    问与答
8 条回复
111111111111
2020-01-05 15:26:43 +08:00
save 以后就有 id 了,然后再修改文件路径
SingeeKing
2020-01-05 15:28:18 +08:00
可以用 post_save signal 改名实现。如果是想创建阶段便命名为 ID 是不可能的 —— 因为保存之前还没有 ID
wd
2020-01-05 15:42:29 +08:00
建一个 sequance 没次需要名字都从 seq 取一个
emeab
2020-01-05 16:31:13 +08:00
用 redis 自增啊
emeab
2020-01-05 16:33:49 +08:00
不过还是推荐用雪花算法做唯一名吧 自增意义不大
dolaxi
2020-01-05 16:45:04 +08:00
@emeab 我是担心数据量大了,如果 name 太复杂,又没有一定的递增,数据库索引压力比较大
beastk
2020-01-05 18:17:07 +08:00
用 hash 吧自己生成,不用等自增,比如时间戳➕随机数,或者原子,提前生成好就是唯一 id 了。
Erroad
2020-01-05 18:39:53 +08:00
时间戳+redis 自增+随机数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/635211

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX