Подскажите решение, как наиболее просто организовать добавление детей к родителям, если их связь дополнена характеристикой? Сумбурно, но думаю изображение всё пояснит:
Как вы можете видеть, связывающая таблица характеризуется не только ссылками на потомков и родителей, но и атрибутами «цена» и «количество». Алхимия предоставляет два шаблона для связей МкМ, и если с шаблоном assotiation_table во flask-admin проблем нет — я просто добавляю детей в список:
то использование шаблона объект ассоциации (мой случай) добавляет ряд сложностей:
- Изначально неизвестно, сколько потомков будет у родителя
- Как организовать ввод данных из набора полей (в моём случае, полагаю, будет x полей (цена, количество), где x — заранее неизвестное количество потомков)
Я бы предпочёл и вовсе не связываться с ассоциативным объектом, но как в таком случае охарактеризовать связь?
Поясню, что в общем и целом всё работает по дефолту, но для создания связи я должен:
- Создать родителя в представлении «родители»
- Создать потомков в представлении «потомки»
- Создать x связей в представлении «потомок-родитель»
В то время как я ищу способ связать их в момент создания родителя, как если бы я использовал assotiation_table pattern
Ммм у вас есть Вещи и Заказы , Тобишь у одной вещи может быть много заказов и в тоже время у одного заказа может быть много вещей . Значит ваша модель связи это ManyToMany, в таблце ордерлист у вас должен быть ForeignKeyField на заказ и вещь. Как это употреблять , сначала создается заказ где ты указваешь ИД покупателя и статус, потом берете нужные тебе вещи , и создаешь ордерлисты где заказ — вещь , столько сколько вещей.
Пример кода на ORM PeeWee
buyer_id = Buyer.get(name = 'Oleg Ivanovich')# берем из базы покупателя order_obj = Order.create(bayer_id=buyer_id) # создаем покупателя things = ['Odejda', 'Zapanki', 'sosiski',] # псевдо список вещей for thing in things: thing_obj = Things.get(name=thing) # достаем из базы саму вещь Orderlist.create(order_id = order_obj, thing_id = thing_obj) #создает запись в таблице
После всех манипуляций мы можем увидеть к каким заказам у нас относится вещь , и какие вещи в заказе.