django unique basename
时间: 2024-09-11 15:04:04 浏览: 41
Django中的`unique basename`通常是指在一个模型或者表单字段中,为了保证数据的唯一性,利用文件名(basename)加上某种唯一的标识符(如时间戳或自增ID),生成一个唯一的文件路径。在Django的文件上传系统中,比如用于处理用户上传的图片或文档,通过设置某个字段为`UniqueFileField`,可以确保每个上传的文件有一个独一无二的名称。
例如:
```python
from django.db import models
from django.utils.text import slugify
class MyModel(models.Model):
file = models.ImageField(upload_to='uploads/', unique=True, blank=True)
unique_basename = models.CharField(max_length=255, editable=False)
def save(self, *args, **kwargs):
if self.file:
filename, extension = os.path.splitext(self.file.name)
# 使用slugify处理文件名并添加时间戳作为唯一标识
self.unique_basename = slugify(filename) + '-' + str(time.time())
super().save(*args, **kwargs)
# 当新文件上传时,如果存在同名文件,则会自动加上唯一前缀
```
阅读全文