Вставить WYMEditor в админ
Как добавить WYMEditor в панель администратора? Я использую его для своего приложения обмена сообщениями между пользователями и хочу заменить текстовую область текстовым редактором.
2 ответа
Решение
Во-первых, скачайте пакет WYMEditor здесь http://www.wymeditor.org/download/
Создать widgets.py
from django import forms
from django.conf import settings
from django.utils.safestring import mark_safe
class WYMEditor(forms.Textarea):
#change this for the exact location of your package in your staticfiles
class Media:
js = (
'js/jquery.js',
'wymeditor/jquery.wymeditor.pack.js',
)
def __init__(self, language=None, attrs=None):
self.language = language or settings.LANGUAGE_CODE[:2]
self.attrs = {'class': 'wymeditor'}
if attrs:
self.attrs.update(attrs)
super(WYMEditor, self).__init__(attrs)
def render(self, name, value, attrs=None):
rendered = super(WYMEditor, self).render(name, value, attrs)
return rendered + mark_safe(u'''<script type="text/javascript">
jQuery('#id_%s').wymeditor({
updateSelector: '.submit-row input[type=submit]',
updateEvent: 'click',
lang: '%s',
});
</script>''' % (name, self.language))
Обновите файл forms.py для формы сообщения, например так:
from app_name.widgets import WYMEditor
class MessageAdminForm(forms.ModelForm):
.....
body = forms.CharField(widget=WYMEditor())
.....
Вот так и не забудьте поставить точное местоположение вашей посылки
Вместо того, чтобы заново изобретать это колесо, я бы порекомендовал использовать что-то вроде django-wymeditor.
Чтобы использовать это, взяли включенный пример, просто добавьте admin.py
:
from django.contrib import admin
from wymeditor.admin import RichTextAdmin
from example.models import TestModel
class TestModelAdmin(RichTextAdmin):
pass
admin.site.register(TestModel, TestModelAdmin)