Я ищу несколько советов / мнений о том, как лучше всего создать динамическую модель в django.
Структура должна описывать данные для Продуктов.Существует около 60 различных возможных точек данных, которые могут быть релевантными, причем каждый Продукт выбирает около 20 из этих точек (с большим перекрытием) в зависимости от его ProductType.Существует около 2 дюжин различных типов продуктов, каждый из которых относится к одной из 6 категорий.
Очевидный, но неблагодарный метод - просто поместить все 100 точек данных в модель продукта и просто выбрать и выбратьи игнорируйте все поля, оставленные пустыми.Преимущество: это очевидно.Недостаток: это некрасиво, и если мне нужно добавить больше точек данных, это требует обновления базы данных.
Моя мысль состоит в том, чтобы сделать каждый продукт полностью абстрактным и определить только его тип продукта, а также несколько других идентификаторов.traits.
class Product(models.Model):
productType = models.ForeignKey(ProductType)
Я бы тогда имел отдельные модели для каждого типа точек данных (число, текст, дата и т. д.), которые выглядели бы так:
class TextData(models.Model):
fieldName = models.CharField(etc)
verboseName = models.CharField(etc)
data = models.CharField(etc)
product = models.ForeignKey(Product)
НаконецЯ бы сделал модель, которая определяет, какие виды данных актуальны для каждого типа продукта, и как должна называться каждая точка данных.
class ProductType(models.Model):
name = models.CharField(etc)
....
Итак, главный вопрос: что будет лучшим способом?заполнить соответствующие поля для типа продукта, когда они могут варьироваться?Возможно, другая модель, которая содержит имя / тип точки данных, и ManyToManyField между ProductType и этой моделью?Текстовое поле с XML?Внешнее поле XML, определяющее структуру?Оставить все это занятие и пойти с чем-то лучше?
Спасибо за любую помощь!