Как сохранить сопоставленные значения на основе внешнего ключа (количество может варьироваться)
Я программирую инструмент листинга продуктов, и мне нужно сопоставить атрибуты продуктов из моих собственных продуктов с атрибутами продуктов Amazon. Какие атрибуты требуются, определяется через категорию продукта. Итак, у меня есть моя собственная статья, которая сопоставлена с данной категорией продукта Amazon, и на основе категории мне нужно создать зависимые поля (выбираемый набор полей). Посмотрите добавление моих моделей:
from django.db import models
from Article.models import Article
class AmazonCategory(models.Model):
category = models.CharField(max_length=255,unique=True)
attribute = models.ManyToManyField(to='AmazonAttribute',through='AmazonCategoryToAmazonAttribute')
class AmazonAttribute(models.Model):
attribute = models.CharField(max_length=255)
class AmazonAttributeValue(models.Model):
attribute = models.ForeignKey(AmazonAttribute,on_delete=models.CASCADE)
value = models.CharField(max_length=255)
class AmazonCategoryToAmazonAttribute(models.Model):
category = models.ForeignKey(AmazonCategory,on_delete=models.CASCADE)
attribute = models.ForeignKey(AmazonAttribute,on_delete=models.CASCADE)
required = models.BooleanField()
class AmazonArticle(models.Model):
article = models.ForeignKey(Article,on_delete=models.CASCADE)
category = models.ForeignKey(AmazonCategory,on_delete=models.CASCADE)
Я приведу подробный пример. В моей личной системе есть продукт под названием "Кисть", и он находится в категории "Искусство", которую я назначил лично.
Теперь я создал категории и значения для таблиц категорий для Amazon (им присвоена категория AmazonCategory) и могу сопоставить свою статью с категорией Amazon "Toys | Toys and Babys | Toy". Я также сохранил в своей базе данных информацию о том, что категория "Игрушки | Игрушки | Игрушки и малыши | Игрушки" требует полей "цвет, возраст и размер". Эти 3 поля имеют набор выбираемых значений, которые уже сохранены в базе данных (AmazonAttributeValue и AmazonAttribute).
Проблема заключается в том, что мне нужно сопоставить атрибуты моего собственного продукта с атрибутами продукта Amazon. В зависимости от категории количество необходимых атрибутов, которые нужно сопоставить, может варьироваться. Как я могу сохранить мои сопоставленные значения?
Потому что в зависимости от категории требуемые атрибуты могут меняться, и я не могу создать таблицу для всех возможных комбинаций. Я думал о JSON-поле, но это кажется неправильным в среде реляционной базы данных...