добавьте дополнительную ссылку для предварительного просмотра объекта в форме администратора Django - PullRequest
3 голосов
/ 22 июля 2011

В моем приложении django мы даем возможность нашему клиенту настроить свою веб-страницу. Для этого я создал модель для генерации шаблона, и она на самом деле работает нормально. Моя проблема в том, что я хотел бы добавить ссылку предварительного просмотра в форму администратора. Таким образом, я мог бы сделать «Сохранить и продолжить редактирование», чтобы сохранить шаблон, и если я хочу, я мог бы щелкнуть эту ссылку, чтобы просмотреть его при редактировании страницы.

Я уже активировал предварительный просмотр из списка, но хочу, чтобы это поле отображалось непосредственно в форме.

  def get_absolute_url(self):
          return "preview/%i/" % self.id

  def preview_template(self):
      return '<a href="' + self.get_absolute_url() + '" target="_blank">Preview</a>'
  preview_template.allow_tags = True
  preview_template.short_description = 'Preview'

  class BlockPageAdmin(admin.ModelAdmin):
    list_display    = ( ... 'preview_template',)

Это работает, но есть ли способ добавить его прямо в форму обновления?

UPDATE

Я получил его, следуя основной идее в этом вопросе: Добавление дополнительной кнопки к одному объекту в админке django

Наконец, я добавил файл javascript в конфигурацию администратора моей модели и написал функцию javascript для генерации URL объекта предварительного просмотра. Я должен был написать представление для отображения предварительного просмотра, который я хотел. Разница с решением в посте заключалась в том, что я сделал кнопку вместо ввода ввода, плюс мой javascript открыл всплывающее окно на странице предварительного просмотра. Таким образом, вы по-прежнему находитесь в интерфейсе администратора, где вы можете обновлять модель по своему желанию во время предварительного просмотра изменений.

Спасибо!

1 Ответ

1 голос
/ 23 июля 2011

Вы можете просто переопределить шаблон для change_form, или вы можете добавить ссылку на инструментальные средства объекта, что является обычным местом для размещения ссылки «предварительного просмотра».Фактически, администратор Django размещает ссылку предварительного просмотра «Просмотр на сайте» для моделей, для которых get_absolute_url определено в том же месте.

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