Как лучше всего реализовать сайт-портфолио на Django?
Здравствуйте. Я новичок в Django. В рамках учебного проекта мне нужно реализовать сайт-портфолио.
Я опишу идею, как по моему представлению оно должно работать и проблемы, которые я не могу решить.
Сначала схема БД: user --(one-to-one)-> portfolio_list --(one-to-many)-> portfolio. Суть в том, чтобы пользователь мог создавать разные портфолио на разные темы.
Пользователь заходит в свой аккаунт, создает портфолио на какую-то тему и с помощью форм загружает контент в каком-то определенном порядке.
Тут возникает проблема №0: каким образом хранить это всё в таблице portfolio? Один пользователь может загрузить 5 картинок с описанием, а другой - только текст. Выходит, каждая строка будет из огромного множества типов с null? Да и загрузка через формы выглядит весьма не ахти.
Проблема №1: до этого я работал со статическими страницами. Теперь каким же образом сделать их динамическими? Т.е. у каждого портфолио будет своя отдельная страница со своим каким-то адресом. И вот именно это я не понимаю как сделать.
Правильно ли я думаю? Можете, пожалуйста, хотя бы написать, какие средства django мне понадобятся для реализации этого всего? Любая помощь приветствуется)
Структура данных
Если у листа Портфолио нет наименования и каких то дополнительных атрибутов, то схему лучше сделать такой
user --(one-to-many)-> portfolio.
Так как в одном портфолио может содержаться 1 или несколько записей, то добавим понятия "Запись"
user --(one-to-many)-> portfolio --(one-to-many)-> item
Хранение
в таблице Items можно сделать поля
id - уникальный идентификатор
portfolio_id - связка с портфолио
title - наименование картинки
url - ссылка на картинку(картинки лучше хранить отдельно в S3 или другом файловом хранилище)
description - описание
Форма
Можно добавить динамику с помощью JS (React js и т.п) или на форме просмотра портфолио сделать кнопку "Добавить работу" и в отдельной форме загружать картинку с описанием.
Для этого всего понадобится React js(если динамическая форма), django и какая то библиотека для работы с картинками(прием на сервере, помещение в хранилище)... Точнее сказать не могу, не работал с django. На RoR бы взял React js, Rails, Dragonfly и работа заняла часа 2 с регистрацией аккаунта в aws S3 и Heroku.