Как реализовать разные поля модели для разных категорий?

У меня есть 2 такие модели:

class Category(MPTTModel):
    name = models.CharField(max_length=100)
    slug = models.SlugField(unique=True)


class Product(models.Model):
    name = models.CharField(max_length=70)
    category = models.ForeignKey(Category, null=True, on_delete=models.SET_NULL)
    slug = models.SlugField(unique=True)
    description = models.TextField(max_length=300)

и в каждой категории мне нужно, чтобы мой продукт имел несколько дополнительных полей, например, процессоры (Категория#1) и SSD диски (Категория#2)

Категория#1-Продукт#1(-/-, общие_ядра, общие_резьбы, ...), Продукт#2(-/-, общие_ядра, общие_резьбы, ...), ...

Категория#2-Продукт#3(-/-, емкость_хранилища, разъем, ...), Продукт#4(-/-, емкость_хранилища, разъем, ...), ...

Есть ли способ добавить поля в продукт в зависимости от категории, к которой он принадлежит, или мне нужно создавать модели для каждой категории?

Одним из возможных решений может быть использование JsonField, если вы используете Postgresql в качестве базы данных

from django.contrib.postgres.fields import JSONField

    class Product(models.Model):
        name = models.CharField(max_length=70)
        category = models.ForeignKey(Category, null=True, on_delete=models.SET_NULL)
        slug = models.SlugField(unique=True)
        description = models.TextField(max_length=300)
        product_features = JSONField()
Вернуться на верх