Django 如何用自增 id 作为图片的名 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
dolaxi

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

  •  
  •   dolaxi Jan 5, 2020 2291 views
    This topic created in 2307 days ago, the information mentioned may be changed or developed.

    我本意是想图片上传的时候,用数据库自增 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 
    Supplement 1    Jan 5, 2020
    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] # 文件名 result = Goods.objects.values('id').order_by('id').last() id = result['id']+1 new_name =str(id) # 拼接文件名和后缀 path = new_name + '.' + ext return path 

    添加前先查一下最大id,目前先这样解决了,如若有更好的方案,欢迎启奏哈~~~

    8 replies    2020-01-05 18:39:53 +08:00
    111111111111
        1
    111111111111  
       Jan 5, 2020 via Android
    save 以后就有 id 了,然后再修改文件路径
    SingeeKing
        2
    SingeeKing  
    PRO
       Jan 5, 2020
    可以用 post_save signal 改名实现。如果是想创建阶段便命名为 ID 是不可能的 因为保存之前还没有 ID
    wd
        3
    wd  
       Jan 5, 2020 via iPhone
    建一个 sequance 没次需要名字都从 seq 取一个
    2kCS5c0b0ITXE5k2
        4
    2kCS5c0b0ITXE5k2  
       Jan 5, 2020
    用 redis 自增啊
    2kCS5c0b0ITXE5k2
        5
    2kCS5c0b0ITXE5k2  
       Jan 5, 2020
    不过还是推荐用雪花算法做唯一名吧 自增意义不大
    dolaxi
        6
    dolaxi  
    OP
       Jan 5, 2020
    @emeab 我是担心数据量大了,如果 name 太复杂,又没有一定的递增,数据库索引压力比较大
    beastk
        7
    beastk  
       Jan 5, 2020 via iPhone
    用 hash 吧自己生成,不用等自增,比如时间戳随机数,或者原子,提前生成好就是唯一 id 了。
    Erroad
        8
    Erroad  
       Jan 5, 2020 via iPhone
    时间戳+redis 自增+随机数
    About     Help     Advertise     Blog     API     FAQ     Solana     2612 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 47ms UTC 02:14 PVG 10:14 LAX 19:14 JFK 22:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86