2

AdminForm の 1 つのフィールドだけに 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» など) を設定するにはどうすればよいですか?

4

1 に答える 1

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 を挿入できます。

この手法は非常に簡単ですが、明らかに広く知られていないか、文書化されていません。

于 2013-08-24T22:00:22.137 に答える