我正在使用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',
...
有没有办法解决我的问题?
答案 0 :(得分:1)
通过将模式设置为textareas
,它不会为您提供任何类型的选择器控件,使其适用于编辑器。您很可能需要放弃mode
设置,然后选择selector
:http://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)