Как добавить ссылку со страницы администрирования Django одного объекта на страницу администрирования связанного объекта?

Чтобы справиться с отсутствием вложенных строкв django-admin, я поместил специальные случаи в два шаблона, чтобы создать ссылки между страницами изменений администратора и встроенными администраторами двух моделей.

Мой вопрос: как создать ссылку со страницы изменения администратора или встроенного администратора одной модели на страницу изменения администратора или встроенного администратора связанной модели аккуратно, без неприятных хаков в шаблоне?

Мне нужно общее решение, которое я могу применить к странице изменения администратора или встроенному администратору любой модели.


У меня есть одна модель, post(имя изменено), которая является встроенной на странице администратора блога, а также имеет собственную страницу администратора. Причина, по которой он не может быть просто встроенным, заключается в том, что у него есть модели с внешними ключами, которые имеют смысл только при редактировании с его помощью, и это имеет смысл только при редактировании с помощью blog.

Для административной страницы postя изменил часть «fieldset.html» с:

{% if field.is_readonly %}
    

{{ field.contents }}

{% else %} {{ field.field }} {% endif %}

на

{% if field.is_readonly %}
    

{{ field.contents }}

{% else %} {% ifequal field.field.name "blog" %}

{{ field.field.form.instance.blog_link|safe }}

{% else %} {{ field.field }} {% endifequal %} {% endif %}

, чтобы создать ссылку на административную страницу блога, где blog_link— это метод модели:

def blog_link(self):
      return '%s' % (reverse("admin:myblog_blog_change",  
                                        args=(self.blog.id,)), escape(self.blog))

Мне не удалось найти idэкземпляра blogза пределами field.field.form .экземпляр.

На административной странице блога, где сообщениеявляется встроенным, я изменил часть «stacked.html» с:

{{ inline_admin_formset.opts.verbose_name|title }}:  {% if inline_admin_form.original %} {{ inline_admin_form.original }} {% else %}#{{ forloop.counter }}{% endif %}

на

{{ inline_admin_formset.opts.verbose_name|title }}:  {% if inline_admin_form.original %} {% ifequal inline_admin_formset.opts.verbose_name "post" %} {{ inline_admin_form.original }} {% else %}{{ inline_admin_form.original }}{% endifequal %} {% else %}#{{ forloop.counter }}{% endif %}

, чтобы создать ссылку на postстраница администратора, так как здесь я смог найти id, хранящийся в поле внешнего ключа.


Я уверен, что есть лучший, более общий способ добавлять ссылки в формы администратора, не повторяясь; что это?

27
задан Community 23 May 2017 в 10:31
поделиться