これをもっと徹底的に調べる時間がなかったので、もっと良い解決策があると確信していますが、これは私にとってはうまくいくようです(django-grappelli2.3.5とdjango-tinymce1.5.1a2でテスト済み) 。
スタックインラインを使用していると想定しています。
grappelliからテンプレートをオーバーライドする必要がありますtemplates/admin/edit_inline/stacked.html
。inline_admin_formset|formsetsort:sortable_field_name
ネストされたforループの反復の直後に、forループの反復の内部に、次のinline_admin_form
スニペットを追加します。
{% if forloop.last %}
<script type="text/javascript">
if (tinyMCE != undefined) {
django.jQuery('textarea', '.empty-form').each(function() {
tinyMCE.execCommand('mceRemoveControl', false, django.jQuery(this).attr('id'));
});
}
</script>
{% endif %}
tinyMCEウィジェット用にレンダリングされたインラインjavascriptによって初期化された、非表示の「空のフォーム」のtextarea要素のtinyMCEコントロールを無効にする必要があります。
元のgrappelliテンプレートの133行目のあたりに、の呼び出しが表示されますgrp_inline()
。引数を追加/変更します。
$("#{{ inline_admin_formset.formset.prefix }}-group").grp_inline({
prefix: "{{ inline_admin_formset.formset.prefix }}",
onBeforeRemoved: function(f) {
if (tinyMCE != undefined) {
// make sure tinyMCE instances in empty-form are inactive
django.jQuery('textarea', '.empty-form').each(function() {
tinyMCE.execCommand('mceRemoveControl', false, django.jQuery(this).attr('id'));
});
}
},
[...]
onAfterAdded: function(form) {
if (tinyMCE != undefined) {
// re-initialise tinyMCE instances
$('textarea', form).each(function(k,v) {
var tid = $(this).attr('id');
tinyMCE.execCommand('mceRemoveControl', false, tid);
tinyMCE.execCommand('mceAddControl', false, tid);
});
// make sure tinyMCE instances in empty-form are inactive
django.jQuery('textarea', '.empty-form').each(function() {
tinyMCE.execCommand('mceRemoveControl', false, django.jQuery(this).attr('id'));
});
}
[...]
}
[...]
ソート可能ファイルを使用する場合は、ドラッグされているインラインのテキスト領域でtinyMCEコントロールも無効にする必要があります。初期化を探しsortable()
、「start」コールバックを変更します。
start: function(evt, ui) {
ui.placeholder.height(ui.item.height() + 12);
if (tinyMCE != undefined) {
// make sure tinyMCE instances in empty-form are inactive
$('textarea', ui.item).each(function(k,v) {
var tid = $(this).attr('id');
tinyMCE.execCommand('mceRemoveControl', false, tid);
});
}
},
[...]
これにより、この厄介な問題を回避する方法の大まかなアイデアが得られるはずです...