Я пытаюсь создать одну HTML-страницу с несколькими экземплярами редакторов TinyMCE. Количество редакторов зависит от запроса; поэтому я не могу перечислить их и инициализировать по отдельности. Вот мой код:
views.py:
from tinymce.widgets import TinyMCE
class ThreadForm(forms.Form):
subject = forms.CharField(max_length=300, widget=forms.TextInput(attrs={'size':'100'}))
body = forms.CharField(widget=TinyMCE())
class MessageForm(forms.Form):
thread_pk = forms.IntegerField()
body = forms.CharField(widget=TinyMCE())
urls.py:
urlpatterns = patterns('',
...
url(r'^tinymce/', include('tinymce.urls')),
)
settings.py:
INSTALLED_APPS = (
...
'tinymce',
)
...
TINYMCE_DEFAULT_CONFIG = {
'selector': 'textarea',
'theme': 'advanced',
'width': 600,
'height': 300,
'theme_advanced_toolbar_location': 'top',
'theme_advanced_buttons1': 'bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist,|,outdent,indent,hr,|,undo,redo',
'theme_advanced_buttons2': 'cut,copy,paste,pastetext,pasteword,|,search,replace,|,link,unlink,charmap,|,visualaid,table,|,blockquote,sub,sup,|,preview,code,emotions,image',
'theme_advanced_buttons3': '',
'plugins': 'paste,table,spellchecker,searchreplace,emotions',
'theme_advanced_resizing': True,
}
member_forums.html:
...
{% block headers %}
{{ thread_form.media }}
{% endblock %}
...
<table id="new_thread_table">
{{ thread_form.as_table }}
</table>
...
{% for message_form in message_forms %}
<table class="new_message_table">
{{ message_form.as_table }}
</table>
...
{% endfor %}
В шаблоне есть одна ThreadForm и несколько MessageForm.
Когда я комментирую MessageForms в HTML, ThreadForm, кажется, работает, но когда я раскомментирую их, ThreadForm загружается со скином TinyMCE, который не обновляется (добавление текста не делает кнопку отмены включенной, даже если она ), и когда я отправляю форму, запись в теле формы отсутствует, что приводит к form.is_valid
ошибке.
У меня есть только {{ thread_form.media }}
в заголовке моего шаблона и ничего для MessageForms. Итерации через:
{% for message_form in message_forms %}
{{ message_form.media }}
{% endfor %}
тоже не принесла никакой пользы.
После некоторых исследований выяснилось, что TinyMCE инициализируется слишком много раз при загрузке MessageForms, что приводит к потере данных во время отправки формы (ИЗМЕНИТЬ в верхнем ответе на: TinyMCE с Django: это поле обязательно для заполнения)
Я не понимаю, как заставить это работать. Любая помощь или указатели будут оценены.