Как добавить пользовательскую форму ввода в админку 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.