
我本意是想图片上传的时候,用数据库自增 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 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,目前先这样解决了,如若有更好的方案,欢迎启奏哈~~~
1 111111111111 2020-01-05 15:26:43 +08:00 via Android save 以后就有 id 了,然后再修改文件路径 |
2 SingeeKing PRO 可以用 post_save signal 改名实现。如果是想创建阶段便命名为 ID 是不可能的 因为保存之前还没有 ID |
3 wd 2020-01-05 15:42:29 +08:00 via iPhone 建一个 sequance 没次需要名字都从 seq 取一个 |
4 2kCS5c0b0ITXE5k2 2020-01-05 16:31:13 +08:00 用 redis 自增啊 |
5 2kCS5c0b0ITXE5k2 2020-01-05 16:33:49 +08:00 不过还是推荐用雪花算法做唯一名吧 自增意义不大 |
7 beastk 2020-01-05 18:17:07 +08:00 via iPhone 用 hash 吧自己生成,不用等自增,比如时间戳随机数,或者原子,提前生成好就是唯一 id 了。 |
8 Erroad 2020-01-05 18:39:53 +08:00 via iPhone 时间戳+redis 自增+随机数 |