Встречается на собеседованиях • сегодня

Как работает наследование в моделях

Наследование в моделях Django позволяет создавать иерархии классов, переиспользуя поля и методы родительских моделей. Есть три основных подхода:

  1. Абстрактные модели (abstract=True) – родительский класс не создаёт таблицу в БД, его поля добавляются в таблицы дочерних моделей.
    python
    class BaseModel(models.Model):
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
    
text
   class Meta:
       abstract = True

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

text

2. **Многотабличное наследование** – создаются отдельные таблицы для родителя и потомков с автоматической связью OneToOne.  
```python
class Place(models.Model):
    name = models.CharField(max_length=50)

class Restaurant(Place):
    serves_pizza = models.BooleanField(default=False)
  1. Прокси-модели (proxy=True) – работают с той же таблицей, что и родитель, но могут менять поведение (например, сортировку или методы).
    python
    class OrderedArticle(Article):
        class Meta:
            proxy = True
            ordering = ['-created_at']

Ключевые различия: абстрактные модели объединяют поля в одной таблице, многотабличные создают связи, прокси-модели не добавляют полей.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы