from django.db import models from common.models.baseModels import BaseModel from common.utils.fileManager import DynamicUploadTo from django.contrib.postgres.fields import ArrayField from django.conf import settings from users.models import User NICKNAME_LEN = 20 class Portfolio(BaseModel): title = models.CharField(max_length=20) category = ArrayField(models.CharField(max_length=20), default=list) is_published = models.BooleanField(default=False) view_count = models.IntegerField(default=0) like_count = models.IntegerField(default=0) scrap_count = models.IntegerField(default=0) is_represent = models.BooleanField(default=False) now_worker = models.CharField(max_length=NICKNAME_LEN, blank=True) thumbnail = models.ImageField(upload_to=DynamicUploadTo("portfolio", "thumbnail"), null=True, blank=True) code_id = models.CharField(max_length=26, null=True, blank=True) owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='owned_portfolios', to_field="id") likers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='liked_portfolios', blank=True) scrappers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='scrapped_portfolios', blank=True) def delete(self, *args, **kwargs): if self.thumbnail: self.thumbnail.delete(save=False) super().delete(*args, **kwargs)