Как разобрать имена файлов (изображений) и присвоить их модели?
Я относительно новичок в Django и создаю приложение для электронной коммерции. У меня есть папка с изображениями (они находятся в статической директории), и много товаров (~15000, я беру данные о товарах из API). К сожалению, я не извлекаю данные об изображениях из API, вместо этого у меня есть папка со всеми изображениями, и их название содержит фрагмент строки product.name.
e.g
product.name = AH 285/55 R16 Turanza AH325
image_name = Turanza__1
Я пытаюсь достичь следующего псевдокода:
if product.name (the string) is contained in the image_name(path of the image), save the image and associate it with the model, otherwise pass.
class Product(models.Model):
code = models.CharField(primary_key=True, unique=True, max_length=15, null=False, blank=False)
name = models.CharField(max_length=50, null=True, blank=True)
brand = models.ForeignKey(Brand, on_delete=models.SET_NULL, null=True, blank=True)
price = models.FloatField(null=True, blank=True)
image1 = ...
image2 = ...
или
class Image(models.Model):
product = models.ForeignKey(Product, ...)
name = models.CharField(...)
Как бы я подошел к этому? Может быть, свойство модели? Что является лучшей практикой для решения подобной проблемы? Может ли кто-нибудь направить меня в правильном направлении?
Первое, что приходит мне в голову, это передать дополнительный параметр экземпляру модели Product при его создании, в данном случае имя файла. Что-то вроде этого
class Product(models.Model):
code = models.CharField(primary_key=True, unique=True, max_length=15, null=False, blank=False)
name = models.CharField(max_length=50, null=True, blank=True)
brand = models.ForeignKey(Brand, on_delete=models.SET_NULL, null=True, blank=True)
price = models.FloatField(null=True, blank=True)
image1 = ...
image2 = ...
@classmethod
def create(cls, filename):
product = cls(name=filename)
return product
Тогда это будет работать следующим образом:
product = Product.create("filename")
Ознакомьтесь с документацией.