Django - Slug применяется к файлу изображения, но предназначен для объекта

class Project(models.Model):
    owner = models.ForeignKey(Profile, null = True, blank = True, on_delete = models.CASCADE)
    title = models.CharField(max_length = 200)
    description = models.TextField(null = True, blank = True)
    featured_image = models.ImageField(null = True, blank = True, 
                                        upload_to = 'projects/', default = "projects/default.jpg")
    
    demo_link = models.CharField(max_length = 2000, null = True, blank = True)
    source_link = models.CharField(max_length = 2000, null = True, blank = True)
    demo = models.BooleanField(default = False, null = True, blank = True)
    
    tags = models.ManyToManyField('Tag', blank = True)
    
    vote_total = models.IntegerField(default = 0, null = True, blank = True)
    vote_ratio = models.IntegerField(default = 0, null = True, blank = True)
    
    created = models.DateTimeField(auto_now_add = True)
    
    slug = models.SlugField(default = '', editable = False, max_length = 200, null = False)
    
    id = models.UUIDField(default = uuid.uuid4, unique = True, primary_key = True, editable = False)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['-vote_ratio', '-vote_total', 'title']
        unique_together = [['slug', 'owner']]

    @property
    def imageURL(self):
        try:
            url = self.featured_image.url
        except:
            url = ''
        return url

    @property
    def reviewers(self):
        queryset = self.review_set.all().values_list('owner__id', flat = True)
        return queryset

    @property
    def getVoteCount(self):
        reviews = self.review_set.all()
        upVotes = reviews.filter(value = 'up').count()
        totalVotes = reviews.count()

        ratio = (upVotes / totalVotes) * 100
        self.vote_total = totalVotes
        self.vote_ratio = ratio

        self.save()
    
    def get_absolute_url(self):
        kwargs = {
            'slug' : self.slug,
            'name' : self.owner.slug,
        }
        
        return reverse('user-profile', kwargs = kwargs)
    
    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super().save(*args, **kwargs)

Я полагаю, что это как-то связано с методом сохранения, но он не должен добавлять slug к featured_image. Даже если я выбираю уже существующее изображение без slug, slug применяется. В Forms.py упоминается featured_image, но виджет не изменяется. Я могу включить представления, но опять же, атрибут featured_image не имеет прямого доступа или изменения.

Будем признательны за любую помощь, чтобы направить меня в правильном направлении.

Вернуться на верх