Загрузка нескольких изображений в Django admin
в настоящее время я создаю сайт портфолио для клиента, и у меня возникли проблемы с одной небольшой областью. Я хочу иметь возможность загружать несколько изображений (разное число) для каждого элемента портфолио, и я не вижу очевидного способа сделать это.
наиболее удобным способом, который я вижу, будет форма загрузки файла с элементом управления JavaScript, который позволяет пользователю добавлять больше полей по мере необходимости. У кого-нибудь был опыт работы с подобной проблемой? Действительно, есть ли какой-либо обычай библиотеки, которые решат мою проблему?
У меня до сих пор было мало вызовов для изменения инструмента администратора, поэтому я действительно не знаю, с чего начать.
спасибо всем, кто может пролить свет.
2 ответов
вы можете расширить интерфейс администратора довольно легко с помощью Javascript. Есть хорошая статья На делать именно то, что вы хотите с немного магии jQuery.
вам просто нужно будет бросить весь его код в один файл Javascript, а затем включить следующее в свой admin.py:
class Photo(admin.ModelAdmin):
class Media:
js = ('jquery.js', 'inlines.js',)
глядя на его источник, Вам также придется динамически добавлять ссылку, чтобы добавить больше строк с помощью Javascript, но это довольно легко do:
$(document).ready(function(){
// Note the name passed in is the model's name, all lower case
$('div.last-related').after('<div><a class="add" href="#" onclick="return add_inline_form(\'photos\')">');
});
вам, вероятно, нужно сделать некоторые стили, чтобы все выглядело правильно, но это должно заставить вас начать в правильном направлении.
кроме того, так как вы в inline
земли, проверьте встроенный фрагмент сортировки.
photologue Это многофункциональное приложение для фотографий для django. например, он позволяет загружать галереи в виде zip-файлов (что в некотором смысле означает загрузку сразу нескольких файлов), автоматически создавать миниатюры разных пользовательских размеров и применять эффекты к изображениям. Я использовал его один раз в одном проекте, и интеграция была не слишком сложной.