1

I'm trying to achive the Django TinyMCE widget with Django Flatpages (into Admin).

I already read this Embedding tinyMCE in django flatpage

I did the sabe but is not working. Here is my admin.py code:

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)

My site is running well, without erros, is possible to edit or create a new Django Flatpage but the widget doesn't appear. Any ideas?

Community
  • 1
  • 1
Lara
  • 2,170
  • 6
  • 22
  • 43

2 Answers2

1

I did something different, and I was missing the "fields" property in meta Class, following the new code, tested and running:

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)
Lara
  • 2,170
  • 6
  • 22
  • 43
1

The accepted answer wasn't working for me (Django 1.10) so this is what worked for me.

  1. I first created a new app called content in my project to keep organized.

    manage.py startapp content
    
  2. I added this to my 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. Finally run manage.py collectstatic, restart your webserver and refresh.

Brett
  • 11
  • 3