0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Модель - это воплощение понятия предметной области в коде приложения. В Django ORM каждая модель представлена классом в коде и таблицей в базе данных:</p>
1
<p>Модель - это воплощение понятия предметной области в коде приложения. В Django ORM каждая модель представлена классом в коде и таблицей в базе данных:</p>
2
<ol><li>Модель представляется классом только в языках с классами. Технически она может быть чем угодно в зависимости от языка.</li>
2
<ol><li>Модель представляется классом только в языках с классами. Технически она может быть чем угодно в зависимости от языка.</li>
3
<li>Поля модели описывают одноимённые столбцы таблицы и одновременно являются<em>свойствами</em>(<em>properties</em>) класса, что позволяет им следить, например, за присваиваемыми полям значениями. В других ORM и других языках столбцы могут быть описаны иначе.</li>
3
<li>Поля модели описывают одноимённые столбцы таблицы и одновременно являются<em>свойствами</em>(<em>properties</em>) класса, что позволяет им следить, например, за присваиваемыми полям значениями. В других ORM и других языках столбцы могут быть описаны иначе.</li>
4
<li>Связь "Модель-Таблица" - это особенность паттерна Active Record. В другом подходе, называемом Data Mapper, всё может быть по-другому.</li>
4
<li>Связь "Модель-Таблица" - это особенность паттерна Active Record. В другом подходе, называемом Data Mapper, всё может быть по-другому.</li>
5
<li>Поле USERNAME_FIELD представляет собой строку, описывающую имя поля в модели пользователя, которая используется в качестве уникального идентификатора. Обычно это какой-то логин, но это также может быть адрес электронной почты или любой другой уникальный идентификатор. Поле должно быть уникальным</li>
5
<li>Поле USERNAME_FIELD представляет собой строку, описывающую имя поля в модели пользователя, которая используется в качестве уникального идентификатора. Обычно это какой-то логин, но это также может быть адрес электронной почты или любой другой уникальный идентификатор. Поле должно быть уникальным</li>
6
</ol><p>Единственное, что нужно для работы модели - создать таблицу в базе данных. Для чего, в свою очередь, потребуется миграция. Django генерирует миграции по команде makemigrations и применяет по команде migrate:</p>
6
</ol><p>Единственное, что нужно для работы модели - создать таблицу в базе данных. Для чего, в свою очередь, потребуется миграция. Django генерирует миграции по команде makemigrations и применяет по команде migrate:</p>
7
<p>Миграции создаются и сохраняются внутри каждого приложения, что позволяет поставлять миграции вместе с остальным кодом и использовать одни и те же приложения в разных проектах.</p>
7
<p>Миграции создаются и сохраняются внутри каждого приложения, что позволяет поставлять миграции вместе с остальным кодом и использовать одни и те же приложения в разных проектах.</p>
8
<p>После того, как миграции были применены, модель можно использовать: создавать сущности, сохранять их в базу и обновлять:</p>
8
<p>После того, как миграции были применены, модель можно использовать: создавать сущности, сохранять их в базу и обновлять:</p>
9
<p>Из примера выше видно, что при создании или обновлении сущности, используется метод save(), а Django ORM сама распознает что происходит: создание или обновление.</p>
9
<p>Из примера выше видно, что при создании или обновлении сущности, используется метод save(), а Django ORM сама распознает что происходит: создание или обновление.</p>
10
<p>Сущности можно также создавать и с помощью метода .create() у специальной сущности -<em>менеджера</em>. Дело в том, что за каждой моделью закреплён хотя бы один менеджер, получить доступ к которому можно через атрибут .objects. Менеджер отвечает за операции, относящиеся не к одной конкретной сущности, а к самой таблице. Метод .create() воздействует на таблицу, создавая в ней новую запись:</p>
10
<p>Сущности можно также создавать и с помощью метода .create() у специальной сущности -<em>менеджера</em>. Дело в том, что за каждой моделью закреплён хотя бы один менеджер, получить доступ к которому можно через атрибут .objects. Менеджер отвечает за операции, относящиеся не к одной конкретной сущности, а к самой таблице. Метод .create() воздействует на таблицу, создавая в ней новую запись:</p>
11
<p>После того как сущность сохранена в базу, её можно извлечь. Самый простой способ сделать это - воспользоваться методом .get() менеджера. Он выполняет поиск по первичному ключу.</p>
11
<p>После того как сущность сохранена в базу, её можно извлечь. Самый простой способ сделать это - воспользоваться методом .get() менеджера. Он выполняет поиск по первичному ключу.</p>
12
12