Используйте Django Flatpages с TinyMCE

Я пытаюсь получить виджет Django TinyMCE с Django Flatpages (в Admin).

Я уже читал это Встраивание tinyMCE в плоскую страницу django

Я сделал саб, но не работает. Вот мой код admin.py:

from django.contrib.flatpages.admin import FlatpageForm, FlatPageAdmin
from django.contrib.flatpages.models import FlatPage
from tinymce.widgets import TinyMCE
from django.contrib import admin


class PageForm(FlatpageForm):

    class Meta:
        model = FlatPage
        widgets = {
            'content': TinyMCE(attrs={'cols': 100, 'rows': 15}),
        }


class PageAdmin(FlatPageAdmin):
    """
    Page Admin
    """
    form = PageForm

admin.site.unregister(FlatPage)
admin.site.register(FlatPage, PageAdmin)

Мой сайт работает хорошо, без ошибок, можно редактировать или создавать новую плоскую страницу Django, но виджет не появляется. Любые идеи?


person Lara    schedule 25.11.2015    source источник


Ответы (2)


Принятый ответ у меня не работал (Django 1.10), так что это то, что сработало для меня.

  1. Сначала я создал новое приложение под названием content в своем проекте, чтобы поддерживать порядок.

    manage.py startapp content
    
  2. Я добавил это в свой admin.py

    from django.contrib import admin
    from django.contrib.flatpages.admin import FlatPageAdmin
    from django.contrib.flatpages.models import FlatPage
    from django.db import models
    from tinymce.widgets import TinyMCE
    
    
    # Register your models here.
    class PageAdmin(FlatPageAdmin):
    """
    Page Admin
    """
    formfield_overrides = {
        models.TextField: {'widget': TinyMCE(attrs={'cols': 100, 'rows': 15})},
    }
    
    
    admin.site.unregister(FlatPage)
    admin.site.register(FlatPage, PageAdmin)
    
  3. Наконец, запустите manage.py collectstatic, перезапустите веб-сервер и обновитесь.

person Brett    schedule 29.12.2016

Я сделал что-то другое, и мне не хватало свойства «поля» в метаклассе, следуя новому коду, протестированному и работающему:

from django.contrib.flatpages.admin import FlatpageForm, FlatPageAdmin
from django.contrib import admin
from django import forms
from django.contrib.flatpages.models import FlatPage
from tinymce.widgets import TinyMCE


class FlatPageForm(forms.ModelForm):
    content = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))

    class Meta:
        model = FlatPage
        fields = '__all__'


class PageAdmin(FlatPageAdmin):
    """
    Page Admin
    """
    form = FlatPageForm


admin.site.unregister(FlatPage)
admin.site.register(FlatPage, PageAdmin)
person Lara    schedule 27.11.2015