Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Разобраться с добавлением/редактированием/удалением изображений в админке #37

Closed
drowsycoder opened this issue Nov 9, 2022 · 6 comments

Comments

@drowsycoder
Copy link
Collaborator

При создании поля превью в Item требуются название, категория, тег... ещё и слова обязательные требует... мы точно превью создаем, а не экземпляр Item? o_O
Ещё и ошибки возникают, если создать с тем же превью, например
Что-то работает вообще совсем не так, как надо. Попробуй-ка сам насоздавать разных вариантов

При создании Item мы должны иметь возможно задать ему главную картинку + галерею из картинок.
И не надо заставлять пользователя/админа перед этим отдельно заносить картинку в базу. Подумай над отдельными моделями для этого

Как думаешь, может стоит создать отдельную модельку для изображения, от него унаследовать модель главного изображения и модели изображения для галереи?
Вдруг это даст какие-то новые возможности помимо того, что единообразнее работа с изображениями будет?
В итоге мы должны удобно добавлять/изменять/удалять изображения прямо из карточки создания/редактирования товара

Кстати, Preview и Gallery логичнее будет унаследовать от общего предка, не находишь?

@Prrromanssss
Copy link
Owner

так я же preview и gallery унаследовал от одного предка, или вы другое имеете в виду ?

@drowsycoder
Copy link
Collaborator Author

drowsycoder commented Nov 9, 2022

Сейчас это просто наследники ImageField, а ты можешь создать свой класс, чтобы

  1. не дублировать поля (как сейчас name)
  2. создать универсальные методы
  3. и вообще изменить логику взаимодействия с картинками, а то сейчас всё ну очень так себе

Попробуй представить, как бы ты сам хотел, чтобы это работало, и сначала набросай банально схему работы
Джанго может ооочень хорошо подстраиваться под желания, и даже найти подходящие варианты несложно

@Prrromanssss
Copy link
Owner

Изменения:

  1. При создании превью не требуется название, категория, тег...
  2. Убрал кникальность, ошибки не возникают
  3. При создании товара, мы прямо оттуда создаем ему превью и фотогалерею
  4. Добавил в базовую модель: name, str, и специальный метод, необходимый для админки - item_name

Как по мне, то стало гораздо удобнее, видно где какое превью чему принадлежит и наоборот, создавать/удалять/редактировать фотки можно в модели товара

@drowsycoder
Copy link
Collaborator Author

В карточке товара разобрались, получается по ТЗ, дальше уже больше в сторону удобства надо копать.

Но в порядке доработки обрати внимание, что при удалении изображения из галереи картинка из папки uploads пропадает, а превьюха из cache - нет (!). То есть, сервер будем забивать ненужным мусором. Это надо устранить. Возможно, что-то стоит ещё посмотреть, может что-то с сигналами

Возвращаясь с донастройке. Основное изображение на странице товара лучше поставить до галереи, это и логичнее. При уменьшении ширины страницы вёрстка плывёт (смотрю у других, многие просто специальное имя для картинок не задавали, что, в принципе, и правда необязательно; для основной можно взять данные от названия товара, а для галереи вообще не брать; но на текущем этапе и так тоже допустимо).
А вот в списке товаров превьюха великовата, туда - уже для себя и для удобства - можно создавать второй вариант превьюхи. Например, 50x50 (или 75х75).

Порядок в модели ImageBaseModel в основном соблюдён, но потом можно будет улучшить, а то место кастомных def'ов и место задания их полей немного портит восприятие кода

Кстати, перепроверь корневой urls.py (не забывай про flake8)

@Prrromanssss Prrromanssss reopened this Nov 10, 2022
@drowsycoder
Copy link
Collaborator Author

Пока есть время проработать материал, предлагаю заняться
Для примера, вот примерно что в админке по подаче должно быть

Screenshot 2022-11-11 at 01-44-32 Выберите товар для изменения Административный сайт Django
Screenshot 2022-11-11 at 01-44-36 Test item 1 Изменить товар Административный сайт Django

@drowsycoder
Copy link
Collaborator Author

Думал, что с получившейся в проекте терминологией получится жить, но нет, это неудобно и сбивает
Превью - это всё-таки картинка предпросмотра, т.е. то, что падает у тебя в media/cache, поэтому такой заголовок подходит разве что для колонок с thumbnail'ами изображений. А так у нас есть основное изображение и изображения галереи

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants