{"id":21164,"library":"django-summernote","title":"django-summernote","description":"A Django integration for the Summernote WYSIWYG editor. Current version 0.8.20.0. Releases are infrequent; the library is in maintenance mode.","status":"active","version":"0.8.20.0","language":"python","source_language":"en","source_url":"http://github.com/summernote/django-summernote","tags":["django","summernote","wysiwyg","admin","editor"],"install":[{"cmd":"pip install django-summernote","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required framework","package":"django","optional":false},{"reason":"Image processing for uploads","package":"Pillow","optional":false}],"imports":[{"note":"","wrong":null,"symbol":"SummernoteWidget","correct":"from summernote.widgets import SummernoteWidget"},{"note":"","wrong":null,"symbol":"SummernoteInplaceWidget","correct":"from summernote.widgets import SummernoteInplaceWidget"},{"note":"","wrong":null,"symbol":"SummernoteModelAdminMixin","correct":"from summernote.admin import SummernoteModelAdminMixin"}],"quickstart":{"code":"INSTALLED_APPS = [\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    'summernote',\n]\n\n# settings.py\nSUMMERNOTE_CONFIG = {\n    'summernote': {\n        'width': '100%',\n        'height': '480',\n    },\n}\n\n# admin.py\nfrom django.contrib import admin\nfrom summernote.admin import SummernoteModelAdmin\nfrom .models import Post\n\nclass PostAdmin(SummernoteModelAdmin):\n    summernote_fields = ('content',)\n\nadmin.site.register(Post, PostAdmin)","lang":"python","description":"Basic admin integration with Summernote for a Post model with a content field."},"warnings":[{"fix":"Ensure your Django X_FRAME_OPTIONS setting is compatible or adjust per-view if needed.","message":"X-Frame-Options setting is now per-view (since 0.8.19.0). If you previously set X_FRAME_OPTIONS globally to 'SAMEORIGIN', that may still work but the view now sets its own header, which could override your setting. Review your deployment.","severity":"breaking","affected_versions":">=0.8.19.0"},{"fix":"Always include 'summernote' in INSTALLED_APPS.","message":"Do NOT add 'summernote' to INSTALLED_APPS? Actually you MUST add it. It's required for the static files and admin integration.","severity":"gotcha","affected_versions":"all"},{"fix":"Use summernote_fields = ('field1', 'field2') in the admin class that extends SummernoteModelAdmin.","message":"The 'summernote_fields' attribute is only for SummernoteModelAdmin. If you use a custom form, you must manually set the widget to SummernoteWidget.","severity":"gotcha","affected_versions":"all"},{"fix":"Use 'from summernote.widgets import SummernoteWidget'","message":"Old import paths like 'from summernote import SummernoteWidget' are deprecated. Always import from the correct module.","severity":"deprecated","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Add 'summernote' to INSTALLED_APPS in settings.py.","cause":"Missing 'summernote' in INSTALLED_APPS.","error":"No module named 'summernote'"},{"fix":"class PostAdmin(SummernoteModelAdmin): summernote_fields = ('content',)","cause":"Forgetting to define summernote_fields attribute, or using a regular ModelAdmin instead of SummernoteModelAdmin.","error":"'SummernoteModelAdmin' object has no attribute 'summernote_fields'"},{"fix":"python manage.py migrate","cause":"Missing migration or incorrect database schema. Likely you didn't run migrations after adding django-summernote.","error":"IntegrityError: NOT NULL constraint failed: summernote_attachment.uploaded_at"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}