В настоящее время я внедряю решение с использованием администратора django, оно позволяет пользователям определять в БД продукт, а затем настраиваемые атрибуты и детали, дополнительные сведения могут объединяться по общему атрибуту, что позволяет мне запрашивать с помощью ajax a пользовательское представление, которое возвращает некоторые данные JSON для автоматического создания необходимых мне полей формы непосредственно в том же представлении набора форм (манипулируя DOM).
Текущий дизайн БД следует этой схеме:
Catalog(name, description, photo)
Product(rel_catalog, name, base_price, photo, manufacturer_email)
ProductDetail(rel_product, rel_attribute, percentage_price, fixed_price)
ProductAttribute(rel_product, name, description)
Как видите, у меня есть каталог, в котором может быть больше товаров, много деталей по каждому товару, агрегированных по атрибутам. Затем я просто показываю по умолчанию Каталог, затем выбираю со всеми доступными продуктами для этого каталога, затем, выбирая нужный Продукт, я получаю полную форму (каждая строка имеет метку с ProductAttribute.name и выбор с соответствующим ProductDetail).
Все работает чертовски хорошо, но мне также нужно хранить эти ссылки в БД, когда кто-то заполняет форму (делает заказ с выбранными продуктами). Эти формы отображаются как StackedInline (ModelAdmin для Заказа).
Я не знаю, сколько вариантов может быть для каждого продукта, поэтому я подумал использовать этот дизайн для отслеживания заказов:
Order(customer, status, notes, tot_price, inserted_by)
OrderItem(rel_order, catalog, product, unit_price)
Но я не знаю, как хранить динамически добавленные входы ...
Я хотел реализовать OrderItemProperty(rel_orderitem, rel_productdetail, rel_productattribute)
для хранения каждого отдельного ввода ... но как мне зациклить это неизвестное поле?
Может быть, вы предлагаете лучший дизайн?
Если вам нужно больше кода, просто спросите его, и я отвечу с помощью ссылки.
Thankyou.