Загрузка данных


# Импортируем models для типов полей.
from django.db import models

# Импортируем функцию, которая возвращает актуальную модель пользователя.
from django.contrib.auth import get_user_model

# Получаем модель пользователя (CustomUser).
# Теперь User - это не стандартная модель, а наша.
User = get_user_model()


# Модель Tag - тег для статей.
class Tag(models.Model):
    name = models.CharField(max_length=50, unique=True)
    slug = models.SlugField(unique=True)

    def __str__(self):
        return self.name


# Модель Article - статья блога.
class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    
    # author теперь ссылается на CustomUser через get_user_model().
    author = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        related_name='articles'
    )
    
    tags = models.ManyToManyField(Tag, related_name='articles', blank=True)
    published_date = models.DateTimeField(auto_now_add=True)
    updated_date = models.DateTimeField(auto_now=True)
    is_published = models.BooleanField(default=False)

    class Meta:
        ordering = ['-published_date']
        verbose_name = 'статья'
        verbose_name_plural = 'статьи'

    def __str__(self):
        return self.title