• Информация на сайте предоставляется «как есть», может содержать неточности и не является консультацией или офертой.
  • Перед использованием проконсультируйтесь со специалистом.

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

Сайт использует cookies для работы и сбора аналитики. Вы можете принять или настроить их, а также полностью отключить в настройках браузера.

Настройки cookies
Необходимые для работы веб-сайта

Используются для входа, навигации и защиты (например: sessionid, csrftoken). Без них сайт может работать с перебоями.

Помогают улучшить сайт, собирая статистику посещений (например, через Яндекс Метрику).

Используются для показа персонализированной рекламы и ретаргетинга в рекламных сетях.

Настройки интерфейса

Декоративный эффект свечения при клике по странице.

DEV -
PROGRAM.RU
Контакты

Django Models: начальные знания о моделях

Разбираемся что такое и зачем нужны модели в django, где хранятся и как их создать

Django models и база данных

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

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

Прежде, мы посмотрели что такое Django на простом проекте.

В этой статье разберёмся, как устроена работа с моделями в Django, какие возможности предоставляет этот механизм и как использовать его для описания структуры данных приложения.

Что такое Models в Django

Модели (Models) в Django это код, который пишет программист на языке python, чтобы описать структуру будущей таблицы в базе данных.

В моделях задается какие данные существуют в таблице, какие характеристики они имеют и как связаны друг с другом.

python
from django.db import models


class Product(models.Model):
    name = models.CharField(max_length=100, verbose_name="Наименование товара")
    description = models.TextField(verbose_name="Описание")
    price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="Цена")


    def __str__(self):
        return self.name

пример модели товара с полями наименование / описание / цена

Зачем нужны модели в django

Модели в django нужны для того, чтобы в одном месте описать структуру таблицы, которая будет создана при помощи Django миграций, а потом постоянно ссылаться в коде на модель для работы с данными используя средства Django ORM.

Где хранятся модели в django

Модели в django хранятся в файле models.py каждого из приложений, для примера если приложение называется blog, будет такая структура:

plaintext
Проект Django
│
└── blog/
    │
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── models.py   ← Модели приложения blog
    ├── views.py
    ├── urls.py
    └── tests.py

файл models.py в приложении django с названием blog

Хранение models.py внутри конретного приложения позволяет иметь описание таблиц рядом с основными местами использования и поддерживать понятную и логичную структуру проекта.

Для большинства случаев одного файла достаточно, однако если файл начинает разрастаться, можно создать вложенную структуру:

blog/
└── models/
    ├── __init__.py
    ├── post.py
    ├── category.py
    └── comment.py

пример вложенной структуры для models в приложении django

При вложенной структуре models является папкой, а не файлом.

Чтобы Django распознавал модели, требуется импортировать их в blog/models/__init__.py:

from .post import Post
from .category import Category
from .comment import Comment

пример импорта вложенных моделей django в blog/models/__init__.py

Как создать модель в django

Модель в Django создаётся с помощью Python-класса, который наследует функционал от встроенного класса django - models.Model.

Внутри модели объявляются атрибуты, соответствующие полям данных. Каждое поле создаётся с помощью специального класса, например CharField для строк или TextField для текста.

По умолчанию имя таблицы в базе данных сформируется на основе названия приложения и названия модели (например: news_article), но его можно изменить задав db_table = "texts" в class Meta.

python
from django.db import models


class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        db_table = "news_text"

пример кода Model в django

В этом примере модель Article описывает таблицу в базе данных для будущих статей, у которой есть заголовок, содержимое и дата создания.

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

Поле title дает возможность хранить до 200 знаков, content умещает текст произвольной длины, а created_at автоматически получит дату и время создания строки в базе данных.

Для создания таблицы не требуется знать SQL, все описывается на Python.

Как применить изменения из модели django в реальную таблицу

Само по себе создание или изменение класса модели не приводит к автоматическому изменению структуры базы данных.

Для синхронизации Python-кода с базой данных в Django используется механизм миграций, про них говорим в специальной статье.

Какие поля можно использовать в модели Django

Тема полей в django довольна обширна, детально разбираем в отдельной статье.

Если у вас есть вопросы по моделям в django можете обратиться за консультацией к программисту.

Вам может быть интересно

Поделиться
Ничего не найдено
Найдите нужную страницу

Статьи, инструменты и помощь