Мне потребовалась некоторая помощь для преобразования в таблицы, а затем в модели django, используя интерфейс администратора Django, две сущности (Item, Prototype), где:
- Элемент может быть отдельным объектом или быть частью одного прототипа * только 1006
- Прототип существует, только если он содержит хотя бы элемент
- Прототип может содержать множество различных предметов.
Диаграмма ER должна быть такой:
На стороне Django я хотел: от PrototypeAdmin включить любой элемент (ы) и от ItemAdmin назначить один прототип, как показано на следующих рисунках:
Я предпринял несколько попыток разработки различных моделей, но я не полностью удовлетворен своими результатами (одна попытка подразумевает множество значений NULL, другая дает интерфейс администратора не очень прост в использовании, из другой я могу только добавлять элементы в прототип .. )
EDIT:
Моей первой попыткой было создать таблицу прототипов с двумя первичными ключами, но я обнаружил, что Django не работает с ними, а также у меня нет виджета внутри ItemAdmin для назначения элемента прототипу:
Items: (<b>ItemID</b>, itemName)
Prototypes:(<b>PrototypeID</b>,<b>ItemID</b>,prototypeName)
Другая попытка выдает таблицу Предметов с 95% NULL FK (у нас только несколько прототипов!), А также мне нужно было гарантировать уникальность prototypeID - ItemID, но это хорошо для нужного мне графического интерфейса (два предыдущих фото):
Items: (<b>ItemID</b>, itemName, prototype(FK))
Prototypes:(<b>PrototypeID</b>,prototypeName)
еще одна попытка, которая решает проблему тысяч NULL, но на стороне Django, в то время как я могу добавить много элементов к прототипу с помощью TabularInline, я не люблю использовать другой TabularInline для выбора того, какой прототип назначить элементу (Вместо этого я хотел выпадать):
Items: (<b>ItemID</b>, itemName, prototype(FK))
Prototypes:(<b>PrototypeID</b>,prototypeName)
linkTableProtoItems: (lnk_ID, <b>prototype(FK)</b>, <b>item(FK)</b>)