or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
Модели рубрик
Над и подрубрики
Базовой модели, в которой будут храниться и надрубрики, и подрубрики, мы дадим имя Rubric. Ее структура приведена в таблице
Код класса модели Rubric. Не забываем, что код всех моделей заносится в модуль models.ру пакета приложения.
Для работы С надрубриками объявим прокси-модель SuperRubric, производную от Rubric. Она будет обрабатывать только надрубрики.
Код обоих классов: И модели SuperRubric, И диспетчера записей SuperRubricManager
Условия фильтрации записей указываем в переопределенном методе get_queryset() Класса Диспетчера записей SuperRubricManager.
В самом классе модели SuperRubric задаем диспетчер записей SuperRubricManager в качестве основного.
Код классов модели subRubric и диспетчера записей SubRubricManager
Диспетчер записей SubRubricManager будет отбирать лишь записи с непустым полем super_rubric (т.е. подрубрики).
Код классов редактора SuperRubricAdmin и встроенного редактора SubRubricinline. Не забываем, что код редакторов, равно как и код, регистрирующий модели и редакторы в подсистеме административного сайта, должен записываться в модуль admin.ру пакета приложения.
У подрубрик сделаем поле надрубрики (super rubric) обязательным для заполнения. Для этого мы объявим форму SubRubricForm в модуле forms.py пакета приложения.
Мы убрали у раскрывающегося списка, с помощью которого пользователь будет выбирать подрубрику, "пустой" пункт, присвоив параметру empty_label конструктора класса поля ModelChoiceField значение None.
Код, объявляющий класс редактора SubRubricAdmin.
Шаблон и контекстный процессор
Создадим в пакете приложения модуль middlewares.py и запишем в него код обработчика контекста bboard_context_processor()
Откроем модуль settings.py пакета конфигурации и зарегистрируем только что написанный обработчик контекста.
Выполним еще пару подготовительных действий. Во-первых, в модуле views.py пакета приложения объявим "пустой" контроллер-функцию by_rubric():
Во-вторых, добавим в список маршрутов уровня приложения маршрут, ведущий на этот контроллер:
Откроем шаблон layout\basic.html и исправим код вертикальной панели навигации следующим образом: