Django админ хранить динамический набор форм с добавлением AJAX - PullRequest
0 голосов
/ 24 декабря 2011

В настоящее время я внедряю решение с использованием администратора 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.

1 Ответ

1 голос
/ 25 декабря 2011

Наконец-то у меня есть рабочее решение,

Я создал собственное представление, переопределяя стандартное представление «добавить /», таким образом, я могу настроить все, что захочу, и я могу читать обработку данных POSTкаждая проверка, помещая затем данные в правильную модель.

...