Как реализовать разные поля модели для разных категорий?
У меня есть 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()