Как добавить пользовательскую форму ввода в админку django для добавления динамических данных?

Я создаю сайт электронной коммерции с несколькими вариантами товаров. Как я могу изменить панель администратора Django, чтобы я мог добавлять новые варианты и соответствующее изображение с одной и той же страницы добавления продукта?

Вот моя модель:

class Products(models.Model):
    title = models.CharField(max_length=200, blank=False, db_index=True)
    description = models.TextField(blank=True, null=True)
    category = models.ManyToManyField(Category, default=None)
    thumbnail = models.ImageField(blank = True, upload_to = 'products/thumbnails')
    tags = models.CharField(max_length=100, blank=True, null=True)
    slug = models.TextField(max_length=500 ,blank=True, help_text="Client side only")
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)

class Attribute(models.Model):
    name = models.CharField(max_length=50, unique=True)
    def __str__(self):
        return self.name

class Attribute_Value(models.Model):
    attribute = models.ForeignKey(Attribute, on_delete=models.CASCADE)
    value = models.CharField(max_length=100, unique=True)

    def __str__(self):
        return self.value

class Product_Option(models.Model):
    product = models.ForeignKey(Products, on_delete=models.CASCADE)
    options = models.ForeignKey(Attribute, on_delete=models.PROTECT)

class Product_Combinations(models.Model):
    product = models.ForeignKey(Products, on_delete=models.CASCADE)
    combination = models.CharField(max_length=100, blank=True, default="")
    price = models.DecimalField(max_digits = 10, decimal_places=2, default = 0)


class Images(models.Model):
    product = models.ForeignKey(Product_Combinations, on_delete=models.CASCADE)
    # title = models.CharField(max_length=200, blank=True)
    image = models.ImageField(blank=True, upload_to='products/images')

Пример. Атрибут: размер, цвет, материал, высота Значение атрибута: 3 дюйма, 5 дюймов, красный, синий, дерево, металл

Продукт 1: Опция продукта - размер, материал

Продукт_Комбинации-

       combination: 3 inch | wood
       price: 100

       combination: 5 inch | wood
       price: 200

       combination: 3 inch | metal
       price: 150

       combination: 5 inch | metal
       price: 250

Продукт 2: Product_Option- высота, цвет

Продукт_Комбинации-

       combination: 3 inch | red
       price: 100

       combination: 5 inch | red
       price: 200

       combination: 3 inch | blue
       price: 150

       combination: 5 inch | blue
       price: 250

Я хочу сохранять данные в таком виде из админ панели напрямую. И все комбинации будут иметь свои различные изображения.

Если я выбираю атрибуты и значения атрибутов, то Django должен создавать все комбинации динамически, как WordPress woo-commerce.

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