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

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

Я уже читал это встраивание tinyMCE в django flatpage

Я сделал сабе, но не работает. Вот мой код 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, но виджет не появляется. Есть идеи?

2 ответа

Решение

Я сделал что-то другое, и мне не хватало свойства "fields" в мета-классе, после нового кода, протестированного и запущенного:

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)

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

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

    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, перезагрузите ваш веб-сервер и обновите.

Другие вопросы по тегам