ruchej
@ruchej
Конструктор мебели. Пишу макросы для К3-Мебель

Как назначать тип содержания меню?

Доброго вечера или дня.

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

Создав пункт меню "каталог", например, нужно будет указать тип содержания страницы этого каталога. Тип содержания страниц будет примерно таким: каталог - на странице отображается галерея картинок товара с описанием; статья - обычный форматированный текст; и т.п.

Выбрав тип содержания, будут появляться поля выбора согласно типу. Например, есть модель catalogue - содержащая перечень товара с картинками и описанием. Есть модель articles содержащая статьи - текст.

Для меню создана модель MenuCategory, которая пока связана с таблицей ContentType - тип содержимого. Модель ContentType содержит поля: name, template, model, model_fields.

  • template - поле содержащее имя файлы шаблона для страницы
  • model - поле содержащее название модели (напр., catalogue)
  • model_fields - список полей из модели в model, которые должны появится в админке для выбора каталога или стать или иного.

Как же теперь связать модель MenuCategory с моделями из поля model таблицы ContentType ? Или как это сделать правильно, т.к. чувствую, что что-то не то делаю.

Натолкните на верный путь теоретически.
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 3
sim3x
@sim3x
Названия моделей в единственном числе
Article
Catalog

Для меню создана модель MenuCategory

Динамически связывать модели не нужно

Юзкейс
Создав пункт меню "каталог", например, нужно будет указать тип содержания страницы этого каталога
никто использовать не будет - джанга не джумла

model_fields - список полей из модели в model, которые должны появится в админке для выбора каталога или стать или иного.
почитай как в админке джанги управляются поля дял редактирования

Строго говоря, тебе нужно добавить в модели Article, Catalog поле
is_show_in_menu = BooleanField(... и из вью передавать в темплейт список тех записей, которые нужно показать в меню
Ответ написан
Не проше ли использовать, что нибудь готовое.
Ответ написан
ruchej
@ruchej Автор вопроса
Конструктор мебели. Пишу макросы для К3-Мебель
Благодарю за помощь.
Пока решил пойти следующим способом.
Т.к. макет сайта и его содержимое должны изначально прорабатываться, то и разделы меню должны изначально определены. Например, имеем главные меню: главная, каталог, интересное, о компании.
Для меню "каталог" я сделал так.
Создана модель Catalog. В неё заносятся каталоги товара с подкаталогами. Тут использовал mptt. В результате могу получить каталог Кухни с подкаталогами: пластик, шпон и т.д.
При создании макета страницы, к меню "Каталог" я подключаю списки дерева из модели Catalog используя mptt. Ссылки на каждый раздел каталога это id в БД. Далее уже через вьюшку обрабатываю эти ссылки, как в уроке официальной документации.
Так всё-таки проще, к тому же админка это не конструктор сайта, как джумла.

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

Войдите, чтобы написать ответ

Похожие вопросы