Есть ли способ создать отдельные страницы для встроенных форм администрирования в Django? - PullRequest
5 голосов
/ 12 мая 2010

Допустим, у меня есть модель A. Затем у меня есть несколько моделей B, C, D, E и т. Д., У каждой из которых есть внешний ключ для модели A. Я знаю, что я могу установить B, C, D и т. Д. Как встроенные в модель A, так что когда я создаю модель A, он будет показывать наборы форм для добавления нескольких элементов для каждой подмодели, но я думаю, что это создаст довольно загроможденную и очень большую страницу.

Есть ли способ, чтобы вместо того, чтобы все эти наборы форм были встроены на одной странице, каждый набор форм располагался на отдельной странице? другими словами, будут ссылки из модели A для создания / редактирования ассоциированной модели B, создания / редактирования ассоциированной модели C и т. д.?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Я ищу способ сделать то же самое. Похоже, что ответом могут быть «прокси-модели». В качестве ответа на этот запрос переполнения стека предлагается:

Администратор django: отдельный вид только для чтения и вид изменения

… и этот запрос запрашивает несколько списков администраторов для одной и той же модели:

Несколько ModelAdmin / представлений для одной и той же модели в Django admin

Документация по прокси-моделям здесь:

Джанго | Модели | Документация Django # Модели прокси

Я новичок в Django, поэтому выложу более полный ответ, как только получу его.

0 голосов
/ 27 октября 2010

Тривиальным ответом будет создание файла:

${TEMPLATE_DIR}/admin/app/modelA/change_form.html

Внутри формы изменений вы делаете это:

{% extends "admin/change_form.html" %}
{% block after_related_objects %}
<ul>
   <li><a href="/admin/app/modelB/{{ original.modelB.id }}/">Edit modelB</a></li>
</ul>
{% endblock %}

Это довольно примитивно, но делает то, что ты хочешь. Списки и сложные агрегации сложнее, и вам нужно проверить наличие оригинала, чтобы убедиться, что вы не генерируете ошибки шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...