Установка поля ImageField "upload_to" продукта на основе названия его категории - Django
class Product(models.Model):
category=models.ForeignKey(Category, on_delete=models.CASCADE,
related_name='product_category', to_field='category_name')
name=models.CharField(max_length=255,)
description=models.CharField(max_length=255)
***************************************************
images=models.ImageField(upload_to='products/'+str(category.category_name), blank=True,null=True)
***************************************************
price=models.DecimalField(decimal_places=2,max_digits=7)
discount=models.DecimalField(decimal_places=2,max_digits=3,
validators=[MinValueValidator(0),MaxValueValidator(0.99)])
def __str__(self):
return self.name
Я хочу сохранять изображения относительно названия категории и названия продукта, поэтому все продукты с одинаковым названием будут сохранены в одном файле. Я не знаю, является ли это лучшей практикой, поэтому, пожалуйста, если это не должно быть так, укажите лучший способ и как я могу достичь того, что я хочу.
Вы можете добавить функцию для установки обозначения места загрузки изображения
import os
def product_image_location(instance, filename):
upload_path = f"products/{instance.category.category_name}"
return os.path.join(upload_path, filename)
class Product(models.Model):
.....
category=models.ForeignKey(Category, on_delete=models.CASCADE)
images=models.ImageField(upload_to=product_image_location, blank=True,null=True)
.....
Использование функции 'product_image_location' в качестве значения 'upload_to'