django admin tinymce for textareas的一部分

时间:2013-08-13 09:17:59

标签: django django-admin tinymce django-tinymce

我正在使用grappelli的django admin + grappelli + tinymce。

它很完美,但我无法弄清楚如何使用textareas创建一个管理表单并仅为其中一部分应用tinymce。

例如,我有两个字段:描述和元描述。我需要仅仅为了描述而使用tinymce,我需要没有tinymce的textarea进行meta-descrption。

通过以下形式启用管理员中的

class AdminForm(forms.ModelForm):      
    def __init__(self, *args, **kwargs):      
        """Sets the list of tags to be a string"""      
        instance = kwargs.get('instance', None)
        if instance:
            init = kwargs.get('initial', {})
            kwargs['initial'] = init

        super(AdminForm, self).__init__(*args, **kwargs)
    class Media:
            js = (
                     settings.STATIC_URL + 'grappelli/tinymce/jscripts/tiny_mce/tiny_mce.js',
                     settings.STATIC_URL + 'grappelli/tinymce_setup/tinymce_setup.js',
            ) 

并在admin.py中启用:

class ModelAdmin(admin.ModelAdmin):
    form = AdminForm

看起来行为在tinymce init的开头描述:

tinyMCE.init({
    mode: 'textareas',
    theme: 'advanced',
    skin: 'grappelli',
    ...

有没有办法解决我的问题?

2 个答案:

答案 0 :(得分:1)

通过将模式设置为textareas,它不会为您提供任何类型的选择器控件,使其适用于编辑器。您很可能需要放弃mode设置,然后选择selectorhttp://www.tinymce.com/wiki.php/Configuration:selector

django-tinymce配置选项只是TinyMCE's settings的镜像。

答案 1 :(得分:0)

在逐个字段的基础上,您可以使用此技术提供自定义ModelForm:

class XAdminForm(forms.ModelForm):
    name = forms.CharField(label='Name', max_length=100,
                    widget=forms.TextInput(attrs={'size': '100'}))
    something = forms.CharField(label='Something', max_length=SOME_MAX_LENGTH,
                      widget=forms.Textarea(attrs={'rows': '10', 'cols': '100'}))
    note = forms.CharField(label='Note', max_length=NOTE_MAX_LENGTH,
                   widget=forms.Textarea(attrs={'class': 'ckeditor'}))
class Meta:
    model = x

class Meta:
    model = x


class XAdmin(admin.ModelAdmin):
    model = X
    form = XAdminForm

    class Media:
        js = ('/static/js/ckeditor/ckeditor.js',)
admin.site.register(X, XAdmin)