I want to apply ckeditor on specific textarea in django admin form not on all the text areas.
Like snippet below will开发者_开发问答 apply ckeditor on every textarea present on django form:
class ProjectAdmin(admin.ModelAdmin):
formfield_overrides =
{models.TextField: {'widget': forms.Textarea(attrs={'class':'ckeditor'})}, }
class Media:
js = ('ckeditor/ckeditor.js',)
but i want it on a specific textarea not on every textarea.
You have couple of options.
I think the simplest is if you use Django 1.2, then you have to create custom form for your admin and use 'widgets' option:
ProjectForm(forms.ModelForm)
class Meta:
model = Project
widgets = {
'field_1' : forms.Textarea(attrs={'class':'ckeditor'}),
'field_2' : forms.Textarea(attrs={'class':'ckeditor'}),
...
}
If you use older version of Django you can still use custom form, just override the field, in which you want ckEditor, in the form:
ProjectForm(forms.ModelForm)
class Meta:
model = Project
field_1 = forms.SomeField(label=u'my label', widget=forms.Textarea(attrs={'class':'ckeditor'}))
Alternative:
ProjectForm(forms.ModelForm)
class Meta:
model = Project
def __init__(self, *args, **kwargs):
super(ProjectForm, self).__init__(*args, **kwargs)
self.fields['field_1'].widget = forms.Textarea(attrs={'class':'ckeditor'})
Finally for all three options, you set your ProjectAdmin to use ProjectForm:
class ProjectAdmin(admin.ModelAdmin)
form = ProjectForm
精彩评论