Django Admin:仅将TinyMCE添加到特定的TextField?

时间:2010-10-14 10:09:23

标签: django django-admin tinymce

我已将TinyMCE设置为使用“管理”面板(根据Django文档中的说明http://code.djangoproject.com/wiki/AddWYSIWYGEditor

问题是我的模型中有Inlines和其他文本区域,我不希望TinyMCE呈现

有谁知道如何将TinyMCE设置为仅加载模型中的特定字段?

由于

修改 好的,所以我安装了django-tinymce并配置了它

我在模型的admin.py中创建了以下内容,其中包含我要添加的字段:

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 个答案:

答案 0 :(得分:9)

是的,如果有人想要这样做(并且像我一样无能为力!)

首先确保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

答案 1 :(得分:5)

该维基页面大约有五年(!),而现在通过简单地使用django-tinymce项目,可以更轻松地集成TinyMCE。

但是,既然您已经这样做了,只需简单更改textareas.js脚本即可实现您想要的效果。您链接中描述的方法使用mode: textareas,您可以自动转换所有textareas。你想要的是这个:

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

其中“id_mytextarea”是您要转换的字段的HTML ID - 通常是以“id_”为前缀的模型字段的名称。请参阅TinyMCE documentation