Как сохранить сопоставленные значения на основе внешнего ключа (количество может варьироваться)

Я программирую инструмент листинга продуктов, и мне нужно сопоставить атрибуты продуктов из моих собственных продуктов с атрибутами продуктов 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-поле, но это кажется неправильным в среде реляционной базы данных...

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