Добрый день!
Структура данных
Если у листа Портфолио нет наименования и каких то дополнительных атрибутов, то схему лучше сделать такой
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.