Skip to content

Instantly share code, notes, and snippets.

@LeoHeo
Last active August 25, 2021 00:36
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save LeoHeo/5131362006bd2ee9b693b3e29692c42f to your computer and use it in GitHub Desktop.
Save LeoHeo/5131362006bd2ee9b693b3e29692c42f to your computer and use it in GitHub Desktop.
django ImageField custom function
import datetime
import os
from django.db import models
def set_filename_format(now, instance, filename):
"""
file format setting
e.g)
{username}-{date}-{microsecond}{extension}
hjh-2016-07-12-158859.png
"""
return "{username}-{date}-{microsecond}{extension}".format(
username=instance.user.username,
date=str(now.date()),
microsecond=now.microsecond,
extension=os.path.splitext(filename)[1],
)
def user_directory_path(instance, filename):
"""
image upload directory setting
e.g)
images/{year}/{month}/{day}/{username}/{filename}
images/2016/7/12/hjh/hjh-2016-07-12-158859.png
"""
now = datetime.datetime.now()
path = "images/{year}/{month}/{day}/{username}/{filename}".format(
year=now.year,
month=now.month,
day=now.day,
username=instance.user.username,
filename=set_filename_format(now, instance, filename),
)
return path
class Experience(models.Model):
...
image = models.ImageField(
upload_to=user_directory_path,
)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment