Junior — Middle
70
Можно ли расширять функциональность модели в Django ORM через наследование?
Answer from AI
sobes.tech AI
Да, в Django ORM можно расширять модели через наследование. Существует несколько типов наследования:
-
Абстрактные базовые классы: создаёте базовую модель с
abstract = Trueв мета-классе, от которой наследуют другие модели. Поля базового класса добавляются в дочерние таблицы. -
Многоуровневое наследование (multi-table inheritance): каждая модель создаёт свою таблицу, а дочерняя ссылается на родительскую через
OneToOneField. Позволяет расширять модель, сохраняя связь с базовой. -
Прокси-модели: не создают новую таблицу, а изменяют поведение существующей модели.
Пример абстрактного класса:
from django.db import models
class TimestampedModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Article(TimestampedModel):
title = models.CharField(max_length=100)
content = models.TextField()
Здесь Article наследует поля времени создания и обновления из TimestampedModel.