添加自定义文件名 django 模型 (models.FileField)
Add custom filename django model (models.FileField)
我有一个用户模型和另一个音乐风格模型。在我的音乐风格模型中,我需要将图像放在原始名称之外的名称下。
我想要的新名称是 'email of the user who is saving' + '_' + 'milliseconds'.
保持这种格式:
'test@gmail.com_1621196336'
- 模型用户:
class CustomUser(AbstractUser):
username = None
id = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False, null=False)
email = models.EmailField('E-mail', unique=True, null=False)
- 模特音乐风格:
class MusicStyle(models.Model):
id = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False, null=False)
name = models.CharField(max_length=150, null=False, blank=False)
image_link = models.FileField(upload_to='musics/thumbnail_images/##CUSTOM_NAME##')
音乐风格与用户模型不同
如何操作?
我不明白带有毫秒的字段是什么或应该做什么,所以我用电子邮件和 music_style 名称替换了它,这里是你如何命名你的图像,你可以根据你的需要进行调整想要
def upload_location(instance, filename):
filebase, extension = filename.split('.')
return 'musics/thumbnail_images/%s_%s.%s' % (instance.user.email,instance.name, extension)
class MusicStyle(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
name = models.CharField(max_length=150, null=False, blank=False)
image_link = models.FileField(upload_to=upload_location)
如果您想为您的文件设置自定义文件名,您可以这样做:
def image_upload_to(instance, filename):
# You can access to your model fields with instance for example: instance.name
return f"musics/thumbnail_images/{filename}"
class MusicStyle(models.Model):
id = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False, null=False)
name = models.CharField(max_length=150, null=False, blank=False)
image_link = models.FileField(upload_to=image_upload_to)
我有一个用户模型和另一个音乐风格模型。在我的音乐风格模型中,我需要将图像放在原始名称之外的名称下。
我想要的新名称是 'email of the user who is saving' + '_' + 'milliseconds'.
保持这种格式: 'test@gmail.com_1621196336'
- 模型用户:
class CustomUser(AbstractUser):
username = None
id = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False, null=False)
email = models.EmailField('E-mail', unique=True, null=False)
- 模特音乐风格:
class MusicStyle(models.Model):
id = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False, null=False)
name = models.CharField(max_length=150, null=False, blank=False)
image_link = models.FileField(upload_to='musics/thumbnail_images/##CUSTOM_NAME##')
音乐风格与用户模型不同
如何操作?
我不明白带有毫秒的字段是什么或应该做什么,所以我用电子邮件和 music_style 名称替换了它,这里是你如何命名你的图像,你可以根据你的需要进行调整想要
def upload_location(instance, filename):
filebase, extension = filename.split('.')
return 'musics/thumbnail_images/%s_%s.%s' % (instance.user.email,instance.name, extension)
class MusicStyle(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
name = models.CharField(max_length=150, null=False, blank=False)
image_link = models.FileField(upload_to=upload_location)
如果您想为您的文件设置自定义文件名,您可以这样做:
def image_upload_to(instance, filename):
# You can access to your model fields with instance for example: instance.name
return f"musics/thumbnail_images/{filename}"
class MusicStyle(models.Model):
id = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False, null=False)
name = models.CharField(max_length=150, null=False, blank=False)
image_link = models.FileField(upload_to=image_upload_to)