0

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

它完美无缺,但我不知道如何使用 textareas 制作管理表单并仅将 tinymce 应用于其中的一部分。

例如,我有两个字段:描述和元描述。我只需要tinymce 来进行描述,我需要没有tinymce 的textarea 来进行元描述。

admin 中的 tinymce 通过如下形式启用:

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',
    ...

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

4

2 回答 2

1

通过将模式设置为textareas,它不会为您提供任何类型的选择器控制,以决定将编辑器应用于哪个选择器。您很可能需要删除mode设置并使用selectorhttp ://www.tinymce.com/wiki.php/Configuration:selector

django-tinymce 配置选项只是TinyMCE 设置的镜像。

于 2013-08-13T12:14:52.860 回答
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)
于 2013-08-24T22:22:34.733 回答