Sobes.tech
Back to questions
Junior — Middle
50

Расскажи о своем опыте проектирования и использования абстрактных моделей, а также работе с полиморфизмом и инстансами в Django.

Answer from AI

sobes.tech AI

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

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

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=200)
    content = models.TextField()

Здесь TimestampedModel — абстрактная модель, поля которой наследуются в Article.

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

Работа с инстансами моделей — создание, изменение и сохранение объектов в базе данных:

article = Article(title='Пример', content='Текст статьи')
article.save()

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