Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Django: Django, abstract model, ORM, database table, model inheritance

Базовая модель должна иметь таблицу?

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

Короткий ответ

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

Длинный ответ

Что такое базовая модель в Django?

В Django ORM модель — это класс Python, который наследуется от django.db.models.Model. По умолчанию каждая модель создает таблицу в базе данных. Однако базовая модель может быть абстрактной, если указать abstract = True в Meta-классе. В этом случае таблица для неё не создается, а поля и методы наследуются дочерними моделями.

Пример абстрактной модели

from django.db import models

class BaseModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

class Article(BaseModel):
    title = models.CharField(max_length=100)
    content = models.TextField()

# Таблица создается только для Article, а не для BaseModel

Когда это полезно?

  • Для повторного использования общих полей (например, даты создания/обновления).
  • Для реализации наследования без лишних таблиц.
  • Для создания миксинов с методами.

Вывод

Абстрактные базовые модели — мощный инструмент для организации кода в Django. Они позволяют избежать дублирования и упрощают поддержку, не создавая лишних таблиц в базе данных. Используйте их, когда нужно общее поведение для нескольких моделей.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Django

    Django

Ключевые слова

#Django

#abstract model

#ORM

#database table

#model inheritance

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.