У нас есть статья про программирование, у статьи есть заголовок ( то есть её главная тема ), раздел, к которому эта самая статья принадлежит ( категория ), внутри статьи текст ( разделы ) с примерами в виде изображений и кода. Вопрос: Как грамотно сформировать модели для такой статьи, чтобы помимо всего прочего с информацией потом ещё можно было работать в шаблоне
Я накидал примерно такую логику ( прошу заметить, что это набросок кода ), но в силу малого опыта не уверен, что такой подход разумен.
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=400, verbose_name='Раздел')
class Article(models.Model):
title = models.CharField(max_length=400, verbose_name='Тема статьи')
category = models.ForeignKey(Category, on_delete=models.PROTECT)
class Section(models.Model):
title = models.CharField(max_length=255, verbose_name='Заголовок раздела')
text = models.TextField(blank=True, verbose_name='Текст раздела')
article = models.ForeignKey(Article, on_delete=models.CASCADE)
class Photo(models.Model):
article = models.ForeignKey(Article, on_delete=models.CASCADE)
section = models.ForeignKey(Section, on_delete=models.CASCADE)
photo = models.ImageField(upload_to=f"photos/{article.name}", verbose_name='Фотография')
class Code(models.Model):
article = models.ForeignKey(Article, on_delete=models.CASCADE)
section = models.ForeignKey(Section, on_delete=models.CASCADE)
code = models.TextField(blank=True, verbose_name='Код')
Как и писал выше, в статье будет содержаться множество примеров кода и изображений, которые нужно не только вывести в нужном месте, но и стилистически оформить, Основное содержание статьи хоть и представляет из себя сплошной текст, все равно разбито на разделы
Получается что:
- Есть модель Category - тема к которой принадлежит статья
- общая модель поста, содержащая только его название. Связана по ключу с Category
- Section, соответственно, будет содержать заголовок и текст раздела
- Ниже идёт модель для фотографии и кода, они связаны с определенным разделом по ключам и при отображении шаблона можно будет ставить проверку, что если на id раздела ссылается фотография и код, то их необходимо отобразить
Насколько вообще правильным является такое решение ?