2016-02-29 2 views
0

Предположим, у меня есть модель под названием 'SysApp'. Каждая система имеет 5 документов. Каждый документ имеет поля:Каков наилучший подход к созданию полей моделей моделей, похожих на список в Django?

  • Название
  • URL для файла (внешний URL)
  • Описание

Вместо того, чтобы определять несколько полей, как

  • title_1,
  • url_1,
  • description_1,
  • title_2,
  • url_2,
  • description_2 (Запрограммированный подход)

есть лучший способ справиться с этим типом случая использования?

Один из способов сделать - создать модель хранения каждого документа, а затем SysApp будет ссылаться на каждый документ, используя ForeignKey. Однако мне еще нужно создать поле, например, document_1, document_2 и т. Д. Также было бы довольно сложно управлять редакторами, когда есть 100+ SysApp и 3-400 + документы.

Возможно ли управлять этими полями, как список или словарь?

Спасибо

+1

Ваш второй подход правильный, но вместо ForeignKey (от 1 до многих) вы должны исследовать отношения ManyToMany и 'FormSet'. – Selcuk

+0

Спасибо @ Kjjassy. Одно я мог бы не сказать ясно. Документы вряд ли будут разделены. например, «установочный документ», это только для 1 SysApp. В этом случае при использовании ForeignKey (или M2M) можно упростить некоторые из кода, но в конце концов у меня есть репозиторий элемента «document», который большинство из них устарел (ни один редактор не удаляет связанный документ перед добавлением нового :( – DSO

ответ

1

Я думаю, что лучший способ организовать ваши - отношения «SysApp документов», предполагая, что каждый документ связан только один sysapp, заключается в использовании ForeignKey, как вы упомянули.

В этом случае вам придется создать только 2 модели: первый из них является SysApp с name полем, а второй Document с полями title, url to file, description и foreignkey к SysApp. Теперь вы можете создавать документы и присоединять их к нужным вам системам. Поэтому вам не нужно указывать поля document_2, document_3 и т. Д.

Если вам необходимо прикрепить один документ к нескольким службам sysapp ManyToMany вместо ForeignKey.

+0

Спасибо @ chem1st. Я поставил свой комментарий выше. – DSO

Смежные вопросы