Sobes.tech
Back to questions
Junior — Middle
60

Можете ли вы объяснить концепцию абстрактной модели в 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()

class Comment(TimestampedModel):
    article = models.ForeignKey(Article, on_delete=models.CASCADE)
    text = models.TextField()

Здесь TimestampedModel содержит поля для хранения времени создания и обновления записи. Она не создаёт таблицу, но Article и Comment наследуют эти поля, что упрощает поддержку и расширение кода.