Пользовательские django формы администратора для ввода bbcode - PullRequest
1 голос
/ 20 сентября 2011

Я пишу на сайте django и хочу использовать встроенный интерфейс администратора, чтобы администраторы могли редактировать часть контента.Поэтому им не нужно изучать html, я хочу, чтобы они могли форматировать содержимое с помощью простых тегов bbcode.

Я написал пару функций для преобразования bbcode в html-разметку и из нее.Назовите их html2bbcode и bbcode2html.

По сути, мне нужно следующее:

  • для передачи html из базы данных через html2bbcode, чтобы bbcode отображался в формах редактирования администратора.
  • для передачи bbcode из формы администратора через bbcode2html, когда администратор нажимает «сохранить», прежде чем он попадает в базу данных.
  • , чтобы иметь возможность извлекать содержимое в виде html, когда он фактически собирается формироватьсячасть веб-страницы.

Я нигде не могу узнать, как передать входные данные из интерфейса администратора через пользовательскую функцию перед сохранением результата в базе данных (или наоборот).Кто-нибудь может указать мне правильное направление?

1 Ответ

1 голос
/ 20 сентября 2011

В вашей модели может быть два отдельных поля - одно для html и одно для bbcode.Сделайте так, чтобы html не отображался в интерфейсе администратора (используя свойство exclude класса ModelAdmin), чтобы ваши администраторы видели и редактировали только поле bbcode.Вы можете получить html-контент, переопределив метод сохранения модели - поместите туда свою функцию bbcode2html.Что-то вроде этого:

def save(self, *args, **kwargs):
    self.html = bbcode2html(self.bbcode)
    super(MyModel, self).save(*args, **kwargs)

Документация по настройке интерфейса администратора: https://docs.djangoproject.com/en/dev/ref/contrib/admin/

...