Должен ли я изменить / расширить интерфейс администратора или написать свои собственные представления / шаблоны CRUD? - PullRequest
3 голосов
/ 31 марта 2011

Я пытаюсь написать простое приложение CRM в Django; частично как учебное упражнение и частично для домашнего использования.

Моя схема немного сложна, так как, скорее, она имеет одну модель Контакта (с домашним телефоном, рабочим телефоном, домашней электронной почтой и т. Д.), Я сократил модель Cntact, а также модель телефона, модель электронной почты и т. Д. , с ForeignKey, указывающим назад на Контакт. Смысл в том, чтобы у контактов было произвольное количество телефонных номеров, адресов электронной почты и т. Д. Просто, верно?

У меня есть несколько рабочих представлений и шаблонов для отображения данных - никаких проблем там нет. И только с очень небольшим количеством тычков в admin.py у меня есть гм ... восемь различных TabularInlines, и интерфейс администратора работает для создания и редактирования данных ... но это уродливо и неуклюже до такой степени непригодности и, конечно, нет концепции разрешений или чего-то еще. Я также не очень люблю иметь совершенно другой интерфейс для отображения и поиска в данных, чем для редактирования и добавления контактов ... Я бы хотел, чтобы как можно больше было сделано в строке, чтобы я мог искать имя, посмотрите на запись, нажмите «добавить заметку», получите всплывающую форму, заполните детали, нажмите «отправить» и все готово, все с AJAXy совершенством, так что нет перезагрузок страницы.

Вопрос: Должен ли я отключить изменение интерфейса администратора, чтобы попытаться сделать его пригодным для использования в приложении, ориентированном на пользователя? И если да, может ли кто-нибудь указать мне хорошее руководство или пример, где кто-то действительно изменил интерфейс администратора, чтобы он работал для пользовательских операций CRUD?

Или я должен просто пойти дальше и написать свои собственные представления CRUD? И если да, может ли кто-нибудь указать мне хорошее руководство или пример, где кто-то написал пользовательские представления CRUD, которые работают с большим количеством ForeignKeys и inline? В идеале мне нужна форма, которая отображает один контакт, все его записи электронной почты, а также пустую форму для добавления новой записи электронной почты, плюс кнопку для добавления дополнительных пустых форм, плюс записи его телефона, плюс пустую форму и т. Д. Для все 8 моих связанных моделей.

(Или я все об этом думаю неправильно? Любой совет приветствуется.)

Ответы [ 2 ]

4 голосов
/ 31 марта 2011

Для нашей интрасети мы используем подклассы ModelAdmin (не смонтированные на сайте администратора через admin.site.register) для большинства наших представлений C (R) UD. Используя пользовательские шаблоны для представлений, он совсем не похож на администратора Django. Что очень удобно, так это то, что он уже обрабатывает всю проверку / сохранение для нас.

В общем, я считаю, что «взлом» администратора очень полезен для быстрой записи представлений C (R) UD и, как правило, с относительно небольшими изменениями в вашем подклассе ModelAdmin, вы можете заставить его работать в вашем случае использования.

Так что я бы проголосовал за использование ModelAdmin, но не за тот, который вы используете в admin, подключите другой шаблон и придумали какой-нибудь модный CSS.

1 голос
/ 05 апреля 2011

Я успешно создал программное обеспечение поверх администратора. Административные хуки (в наши дни) допускают очень тонкую настройку, то есть, в общем, вам нужно только коснуться того, что вы хотите изменить.

Изменения могут перейти от тривиальной косметической корректировки к полной замене:

Если вы предоставите шаблоны / admin / base.html, ваш сайт администратора может выглядеть так, как вам нравится. И, конечно же, панель навигации в верхней части может содержать ссылки на некоторые из ваших собственных представлений. Следите за тем, чтобы не указывать URL-адреса в ссылках, всегда в обратном порядке

Вы можете перегрузить ModelAdmin "change_view", "changelist_view" и т. Д. И поменять их местами для собственных представлений. Например, я заменил список изменений по умолчанию и его простую фильтрацию интерфейсом поиска, который позволяет создавать динамические запросы, настраивать столбцы результатов пользователем и загружать / сохранять эти поиски. Это не повлияло ни на одно из других представлений этого ModelAdmin.

Перегрузка "get_urls ()" ModelAdmin позволяет вам перематывать существующие админ-URL, чтобы перейти к вашим собственным представлениям. Я сделал последнее для одной модели, где я хотел, чтобы простой экран добавления был заменен полностью настроенным мастером (опираясь только на ModelForm).

Не забудьте самый простой подход, особенно Относительно вашего "совершенства AJAXy": просто определите "css" и "js" в Meta вашего ModelAdmin. Хотите переместить строку снизу, чтобы она находилась между третьим и четвертым полем, а это невозможно с помощью параметров? Однострочник в jquery.

Посмотрите "django-grappelli", чтобы узнать, как улучшить внешний вид и поведение администратора.

Что вы имели в виду под «и, конечно, нет концепции разрешений или чего-то еще?»

...