Django - отображение таблицы, охватывающей 3 модели - PullRequest
0 голосов
/ 19 июля 2011

У меня есть 3 связанных поля, и я пытаюсь найти хороший способ построить таблицу, которая отображает все три. У меня есть Employees, CertificateTypes и Certificates, с сертификатами, связывающими Employee и CertificateType. CertificateTypes - это, в основном, виды обучения, которые сотрудник может получить, а сертификаты - это обучение, которое сотрудник получил в виде CertificateType.

Например: (параллельный пример): студент может получить диплом бакалавра наук, с сотрудником = студент, CertificarteType = бакалавр наук и сертификат = диплом.

Я хочу, чтобы моя таблица отображала всех сотрудников в виде строк, CertificateTypes в виде столбцов и дату окончания действия сертификата в качестве значения ячейки.

Я мог бы создать список / dict на мой взгляд, или я мог бы попытаться встроить его в шаблон (я смотрел на тег шаблона перегруппировки). Какой самый лучший / самый простой способ сделать это?

1 Ответ

0 голосов
/ 20 июля 2011

Чтобы решить эту проблему, придерживайтесь отделения представления от логики представления.На самом деле не существует каких-либо стандартных средств для объединения> 2 связанных моделей с шаблонной логикой.Вопрос в большей или меньшей степени является внешним объединением, которое Django решает не поддерживать (см. этот вопрос ).

Чтобы ответить на свой вопрос, я решил создать пользовательскийконтекст как словарь сотрудника, ключ сертификата, пары значений.

Контекст имеет формат:

certs_context = { 
    employee0: [
        [
            certificatetype0_certificate0,
            certificatetype0_certificate1,
        ],
        [
            certificatetype1_certificate0,
        ],
    ],
}

Пока список сертификатов для каждого ключа сотрудника поддерживает одинаковый порядок типов сертификатов,легко создать таблицу в шаблоне, используя вложенный цикл.

Сохраняет логику шаблона / представления (более) простой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...