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

Можно ли наследовать модель Django ORM

Да, модели Django ORM поддерживают наследование. Есть три основных подхода:

  1. Абстрактное наследование - родительская модель не создает таблицу в БД, а служит шаблоном для дочерних:
python
class BaseModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    
    class Meta:
        abstract = True

class User(BaseModel):
name = models.CharField(max_length=100)

text

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

class Restaurant(Place):
    serves_hot_dogs = models.BooleanField(default=False)
  1. Прокси-модели - работают с той же таблицей, что и родитель, но могут изменять поведение:
python
class User(models.Model):
    name = models.CharField(max_length=100)

class AdminUser(User):
    class Meta:
        proxy = True
    
    def save(self, *args, **kwargs):
        self.is_admin = True
        super().save(*args, **kwargs)

Выбор типа наследования зависит от требований к структуре БД и логике приложения.

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

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

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

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