在django管理表单中自定义ckeditor

时间:2013-08-23 11:02:42

标签: django django-admin ckeditor django-widget django-ckeditor

我需要在我的AdminForm中仅为一个字段配置ckeditor的自定义参数(工具栏,宽度和高度)

class BlogAdminForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(BlogAdminForm, self).__init__(*args, **kwargs)
        self.fields['description'].widget = CKEditor(attrs={'cols': 100, 'rows': 25})

如何仅为此字段设置ckeditor的特定参数(例如«toolbarGroups»,«width»,«height»等)?

1 个答案:

答案 0 :(得分:1)

我发现覆盖字段属性的最佳方法是使用自定义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 XAdmin(admin.ModelAdmin):
    model = X
    form = XAdminForm

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

您可以根据需要在ModelForm或ModelAdmin中注入其他属性或JS。

这项技术很容易,但显然没有广为人知或记载。