Администратор Django: Добавить TinyMCE только в конкретный TextField? - PullRequest
8 голосов
/ 14 октября 2010

Я настроил TinyMCE для работы с панелью администратора (согласно инструкциям в Django Docs http://code.djangoproject.com/wiki/AddWYSIWYGEditor)

Проблема заключается в том, что в моей модели есть встроенные и другие текстовые областидля которого я не хочу, чтобы TinyMCE отображал

Кто-нибудь знает, как настроить TinyMCE для загрузки только для определенных полей в моей модели?

Спасибо

РЕДАКТИРОВАТЬ Итак, я установил django-tinymce и настроил его

Я создал следующее в admin.py модели с полем, к которому я хочу добавить tinymce:

class FooAdminForm(forms.ModelForm):
    class Meta:
        model = Foo

    def __init__(self, *args, **kwards):
        self.bar = forms.TextField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
        super(FooAdminForm, self).__init__(*args, **kwargs)

К сожалению, это все еще не работает

Ответы [ 2 ]

9 голосов
/ 31 мая 2011

Правильно, если кто-то хочет это сделать (и такой же невежественный, как и я!)

Сначала убедитесь, что настройки tinymce правильные (я пренебрегал этим!)

TINYMCE_JS_ROOT = '/media/tiny_mce/'
TINYMCE_JS_URL = os.path.join(MEDIA_URL, "tiny_mce/tiny_mce_src.js")
TINYMCE_DEFAULT_CONFIG = {
    'plugins': "table,spellchecker,paste,searchreplace",
    'theme': "advanced",
}
TINYMCE_SPELLCHECKER = True

Тогда в admins.py вашей модели

from django.forms import *
from django.db.models import *
from tinymce.widgets import TinyMCE

class ProductionForm(forms.ModelForm):
    some_field = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))

    class Meta:
        model = Production

class ProductionAdmin(admin.ModelAdmin):
    form = ProductionForm
5 голосов
/ 14 октября 2010

Этой вики-странице около пяти лет (!), И в наши дни есть гораздо более простой способ интеграции TinyMCE, просто используя проект django-tinymce .

Однако, поскольку вы уже сделали это таким образом, вы можете добиться желаемого, просто изменив скрипт textareas.js.Метод, описанный по вашей ссылке, использует mode: textareas, который, как вы заметили, автоматически преобразует все текстовые области.То, что вы хотите, это:

mode: "exact",
element: "id_mytextarea",

, где "id_mytextarea" - это HTML-идентификатор поля, которое вы хотите преобразовать - обычно это имя поля модели с префиксом "id_".См. Документацию TinyMCE .

...