[4th TeamProject] - 미디어 파일 저장 경로 설정

장현웅·2023년 10월 21일
0

이번 서비스는 사용자의 얼굴 사진을 업로드하여 다양한 표정으로 변환시켜주는 서비스입니다.

서비스를 이용하는 사용자가 많아질 수록 미디어 파일들을 사용자별로 관리해주기 위해 미디어 파일 경로 설정에 몇몇 작업들을 해줬습니다.

[ user/models.py ]

def image_upload_path(instance, filename):
    return f'user/{instance.owner.id}/profile_img/{filename}'

class ProfileImage(models.Model):
    """
    사용자의 프로필 이미지 모델을 정의하는 클래스입니다.

    - owner : 프로필 사진의 주인입니다.
    - profile_img : 사용자의 프로필 이미지입니다.
    """
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='작성자', on_delete=models.CASCADE, related_name='profile_img')
    profile_img = models.ImageField('프로필 이미지', upload_to=image_upload_path)

    class Meta:
        db_table = 'profile_img'

[ post/models.py ]

def image_upload_path(instance, filename):
    timestamp = datetime.now().strftime("%Y%m%d%H%M%S%f")
    return f'user/{instance.owner.id}/converted_img/{filename}_{timestamp}'

class Image(models.Model):
    """
    - owner : 이미지 변환을 요청하는 사용자입니다.
    - image : 변환된 이미지의 url입니다.
    - created_at : 변환된 이미지가 생성된 일자 및 시간입니다.
        - 변환된 이미지가 생성된 시간을 자동으로 저장하도록 설정합니다.
    """
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='작성자', on_delete=models.CASCADE)
    image = models.ImageField('변환 이미지', upload_to=image_upload_path)
    created_at = models.DateTimeField("생성 시각", auto_now_add=True)

    class Meta:
        db_table = 'image'

image_upload_path(instance, filename) 함수는 Django의 ImageField 혹은 FileField와 함께 사용되어 이미지 파일을 업로드할 경로를 지정하기 위해 사용되는 사용자 정의 함수입니다. 이 함수는 파일을 저장할 경로를 지정하고 해당 경로에 파일 이름을 설정합니다.

  • instance: 이미지가 연결될 모델 객체입니다.
  • filename: 업로드 될 파일의 이름입니다.

위와 같이, 사용자의 id별로 파일들을 관리할 수 있어서 유지보수 관리가 쉬워질 것이 기대됩니다.

0개의 댓글