Кажется, что вы на самом деле не понимаете, что такое Model
и ModelAdmin
. Класс Model
представляет собой представление таблицы базы данных, а класс ModelAdmin
представляет собой компонент, который обеспечивает функции администрирования для этой таблицы и ее содержимого. Итак, когда вы пишете, что «позади нет таблицы базы данных», вы как-то упускаете из виду: у вас не может быть ModelAdmin без модели, и вы не можете иметь модель без таблицы базы данных.
Короче говоря, вам придется либо
1 / использовать модель или
2 / написать все представления и шаблоны самостоятельно и подключить их к администратору.
Для второго решения см. Этот вопрос (и его ответы) , или просто Google для "django admin views без моделей" (есть пара приложений 3-ей части, которые должны помочь подключать пользовательские представления в админке).
Теперь первое решение может, или нет, в зависимости от ваших конкретных потребностей, быть таким же хорошим, как и второе, в зависимости от того, кто заполняет ваш s3bucket и как. Без модели вам придется запрашивать в файле список файлов каждый раз, когда кто-то обращается к вашему пользовательскому представлению администратора, что может быть довольно дорогостоящим. Если все загрузки в корзину s3 находятся под вашим контролем, вы можете использовать модель, чтобы сохранить локальный список файлов «кеш», и вам нужно будет нажимать s3 только для эффективной загрузки файла. Это также дает вам возможность хранить метаданные об этих файлах, которые можно использовать для поиска / фильтрации, и, в случае необходимости, связывать ваши файлы s3 с другими моделями. И, конечно, это означает, что вы получаете свой админ бесплатно;)
На самом деле, даже если у вас нет контроля над этими загрузками, вы все равно можете использовать модель по вышеуказанным причинам и иметь фоновую задачу (cron job или эквивалентную), которая обновляет вашу таблицу из содержимого корзины s3 (или - если s3 предоставляет веб-хуки - имейте конечную точку API, вызываемую s3 при загрузке, которая обновляет вашу таблицу).