Skip to content

Instantly share code, notes, and snippets.

@elidickinson
Created November 20, 2011 01:16
Show Gist options
  • Star 14 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save elidickinson/1379652 to your computer and use it in GitHub Desktop.
Save elidickinson/1379652 to your computer and use it in GitHub Desktop.
Using CKEditor with Flatpages
from django.contrib import admin
from django.contrib.flatpages.models import FlatPage
# Note: we are renaming the original Admin and Form as we import them!
from django.contrib.flatpages.admin import FlatPageAdmin as FlatPageAdminOld
from django.contrib.flatpages.admin import FlatpageForm as FlatpageFormOld
from django import forms
from ckeditor.widgets import CKEditorWidget
class FlatpageForm(FlatpageFormOld):
content = forms.CharField(widget=CKEditorWidget())
class Meta:
model = FlatPage # this is not automatically inherited from FlatpageFormOld
class FlatPageAdmin(FlatPageAdminOld):
form = FlatpageForm
# We have to unregister the normal admin, and then reregister ours
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, FlatPageAdmin)
@ride90
Copy link

ride90 commented Aug 27, 2013

Where better to create this file?

@b0uh
Copy link

b0uh commented Jun 16, 2017

In order to make it work with latest versions of Django you should add fields = '__all__' to the Meta class.

@joshlsullivan
Copy link

@source3
Copy link

source3 commented May 26, 2018

To get this to work In Django 2.0 I created a new app call projectflatpages.
Reference: https://docs.djangoproject.com/en/2.0/ref/contrib/flatpages/#via-the-admin-interface, https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_overrides

Created an admin.py in the app folder.

from django.contrib import admin
from django.db import models
from django.contrib.flatpages.admin import FlatPageAdmin
from django.contrib.flatpages.models import FlatPage
from django.utils.translation import gettext_lazy as _
from ckeditor.widgets import CKEditorWidget

# Define a new FlatPageAdmin
class FlatPageAdmin(FlatPageAdmin):
    formfield_overrides = {
        models.TextField: {'widget': CKEditorWidget}
    }

# Re-register FlatPageAdmin
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, FlatPageAdmin)

@chalist
Copy link

chalist commented Feb 12, 2019

To get this to work In Django 2.0 I created a new app call projectflatpages.
Reference: https://docs.djangoproject.com/en/2.0/ref/contrib/flatpages/#via-the-admin-interface, https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_overrides

Created an admin.py in the app folder.

from django.contrib import admin
from django.db import models
from django.contrib.flatpages.admin import FlatPageAdmin
from django.contrib.flatpages.models import FlatPage
from django.utils.translation import gettext_lazy as _
from ckeditor.widgets import CKEditorWidget

# Define a new FlatPageAdmin
class FlatPageAdmin(FlatPageAdmin):
    formfield_overrides = {
        models.TextField: {'widget': CKEditorWidget}
    }

# Re-register FlatPageAdmin
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, FlatPageAdmin)

This works fine. thanks dude.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment