Как избавится от автоматического дописывания символов к имени изображения для уникальности?
Хотелось бы иногда использовать одно и то же изображение для разных статей.
Изначально думал, что при загрузке изображения с таким же именем замена неизбежна, но как оказалось нет - к файлу дописываются несколько символов.
Получается база будет содержать 2 одинаковые картинки, что не есть хорошо.
Не знаю, кто это делает, Django или Pillow, но хотелось бы от этого избавиться. Помогите пожалуйста.
Схожим образом проверять совпадение имён файлов, удалять старый файл и загружать новый.
Но как быть с одноимёнными, но разными файлами? Пользователи сайта будут вольно и невольно подменять уже загруженные изображения на свои. Переносить опыт работы с файловой системой на веб-сайт можно только в случае, если Вы единственный пользователь.
В случае многопользовательского проекта, для повторного использования изображений стоит завести под них отдельную модель. А в модели статей сделать ForeignKey на модель изображений.
Руслан Гильфанов, а вообще был еще вариант вручную закидывать изображения на сервер и вместо поля ImageField создать CharField, в котором просто прописывать путь.
Вариант сумасшедший, но полностью контролируемый)
Руслан Гильфанов, кстати вот и решение. На самом деле создать новую модель и туда закидывать изображения. А уже в модели статей записывать путь вручную. Название изображений я не хеширую, поэтому можно впринципе и без ForeignKey обойтись.
Но как быть с одноимёнными, но разными файлами? Пользователи сайта будут вольно и невольно подменять уже загруженные изображения на свои. Переносить опыт работы с файловой системой на веб-сайт можно только в случае, если Вы единственный пользователь.
Я единственный пользователь, поэтому такой вариант можно и пустить в бой. А названия файлов будут исходить из названия статей, поэтому и за уникальностью тоже будет следить не сложно.
PiggyPig, модель изображения может содержать дату загрузки/обновления, а так же внешние ключи на модели пользователь, категория изображений и т.д. Тогда в админке можно будет сделать аж целых 3 фильтра.
А если добавить опциональные поля для названий и описаний, можно будет добавить в админку поиск по этим полям. По дефолту, названия можно заполнять строкой из имени пользователя и даты загрузки.
Так же, в админке можно сделать вывод миниатюрок изображений (правда, лучше это делать задействовав дополнительные пакеты, вроде django-imagekit -- и авторесайз с кешированием можно настроить, и как шаблоны админки подправить расписано в документации).