django admin tinymce для части текстовых полей

Я использую django admin + grappelli + tinymce от grappelli.

Он работает отлично, но я не могу понять, как сделать форму администратора с текстовыми областями и применить tinymce только для их части.

Например, у меня есть два поля: описание и метаописание. Мне нужно tinymce только для описания, и мне нужно textarea без tinymce для мета-описания.

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

Есть ли способ решить мою проблему?


person rush    schedule 13.08.2013    source источник


Ответы (2)


Установив режим textareas, он не даст вам никакого контроля над селектором, к которому он применяет редактор. Скорее всего, вам придется отказаться от настройки mode и перейти к selector: http://www.tinymce.com/wiki.php/Configuration:selector

Параметры конфигурации django-tinymce — это просто зеркало для настроек TinyMCE.

person Brandon    schedule 13.08.2013

На основе поля за полем вы можете использовать эту технику, предоставляя пользовательскую 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)
person rbell01824    schedule 24.08.2013