Загрузка нескольких изображений в 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-файлов (что в некотором смысле означает загрузку сразу нескольких файлов), автоматически создавать миниатюры разных пользовательских размеров и применять эффекты к изображениям. Я использовал его один раз в одном проекте, и интеграция была не слишком сложной.