Ошибка при публикации статьи и прикреплении фотографий
Пишу свой первый крупный проект на Django. Для его реализации мне необходим расширенный редактор статей. Таковым я выбрал ckeditor. Прикрепил его, согласно правилам к действующей модели post. Провел миграцию. Редактор появился, но не работает. При попытке вставить фотографию выдает ошибку и требует прикрепить фото по ссылке.
а при попытке публикации статьи без фотографий выдает следующее:
> > IntegrityError at /admin/prosvet_logs/post/add/ NOT NULL constraint failed: prosvet_logs_post.publish Request Method: POST Request
> URL: http://127.0.0.1:8000/admin/prosvet_logs/post/add/ Django
> Version: 3.1.2 Exception Type: IntegrityError Exception Value: NOT
> NULL constraint failed: prosvet_logs_post.publish Exception
> Location: C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\backends\sqlite3\base.py,
> line 413, in execute Python
> Executable: C:\Users\DNS\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\python.exe
> Python Version: 3.8.6 Python Path: ['C:\\Users\\DNS\\prosvet',
> 'C:\\Program '
> 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\\python38.zip',
> 'C:\\Program '
> 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\\DLLs',
> 'C:\\Program '
> 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\\lib',
> 'C:\\Users\\DNS\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0',
> 'C:\\Users\\DNS\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python38\\site-packages',
> 'C:\\Program '
> 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0',
> 'C:\\Program '
> 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\\lib\\site-packages']
> Server time: Fri, 18 Dec 2020 10:23:38 +0000 Traceback Switch to
> copy-and-paste view
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\backends\utils.py,
> line 84, in _execute
> return self.cursor.execute(sql, params) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\backends\sqlite3\base.py,
> line 413, in execute
> return Database.Cursor.execute(self, query, params) … ▶ Local vars The above exception (NOT NULL constraint failed:
> prosvet_logs_post.publish) was the direct cause of the following
> exception:
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\core\handlers\exception.py,
> line 47, in inner
> response = get_response(request) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\core\handlers\base.py,
> line 179, in _get_response
> response = wrapped_callback(request, *callback_args, **callback_kwargs) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\contrib\admin\options.py,
> line 614, in wrapper
> return self.admin_site.admin_view(view)(*args, **kwargs) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\utils\decorators.py,
> line 130, in _wrapped_view
> response = view_func(request, *args, **kwargs) … ▶ Local vars
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\views\decorators\cache.py,
> line 44, in _wrapped_view_func
> response = view_func(request, *args, **kwargs) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\contrib\admin\sites.py,
> line 233, in inner
> return view(request, *args, **kwargs) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\contrib\admin\options.py,
> line 1653, in add_view
> return self.changeform_view(request, None, form_url, extra_context) … ▶ Local vars
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\utils\decorators.py,
> line 43, in _wrapper
> return bound_method(*args, **kwargs) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\utils\decorators.py,
> line 130, in _wrapped_view
> response = view_func(request, *args, **kwargs) … ▶ Local vars
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\contrib\admin\options.py,
> line 1534, in changeform_view
> return self._changeform_view(request, object_id, form_url, extra_context) … ▶ Local vars
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\contrib\admin\options.py,
> line 1580, in _changeform_view
> self.save_model(request, new_object, form, not add) … ▶ Local vars
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\contrib\admin\options.py,
> line 1093, in save_model
> obj.save() … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\models\base.py,
> line 753, in save
> self.save_base(using=using, force_insert=force_insert, … ▶ Local vars
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\models\base.py,
> line 790, in save_base
> updated = self._save_table( … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\models\base.py,
> line 895, in _save_table
> results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw) … ▶ Local vars
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\models\base.py,
> line 933, in _do_insert
> return manager._insert( … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\models\manager.py,
> line 85, in manager_method
> return getattr(self.get_queryset(), name)(*args, **kwargs) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\models\query.py,
> line 1254, in _insert
> return query.get_compiler(using=using).execute_sql(returning_fields) … ▶
> Local vars
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\models\sql\compiler.py,
> line 1397, in execute_sql
> cursor.execute(sql, params) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\backends\utils.py,
> line 98, in execute
> return super().execute(sql, params) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\backends\utils.py,
> line 66, in execute
> return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) … ▶ Local vars
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\backends\utils.py,
> line 75, in _execute_with_wrappers
> return executor(sql, params, many, context) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\backends\utils.py,
> line 84, in _execute
> return self.cursor.execute(sql, params) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\utils.py,
> line 90, in __exit__
> raise dj_exc_value.with_traceback(traceback) from exc_value … ▶ Local vars
> C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\backends\utils.py,
> line 84, in _execute
> return self.cursor.execute(sql, params) … ▶ Local vars C:\Users\DNS\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\django\db\backends\sqlite3\base.py,
> line 413, in execute
> return Database.Cursor.execute(self, query, params) … ▶ Local vars
На данный момент у меня следующий код:
models.py
class Post(models.Model):
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=50, unique=True)
author = models.ForeignKey(User, on_delete=models.CASCADE,
related_name='news_posts', null=True, blank=True)
body = RichTextUploadingField()
def __str__(self):
return self.title
class Meta:
verbose_name = u"Новость"
verbose_name_plural = u"Новости"
admin.py
from django.contrib import admin
from .models import Post
from prosvet_logs.models import About_us, Post, Contacts, Cooperation, Dialogs, Monologs, Projects
class PostAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}
admin.site.register(About_us)
admin.site.register(Post, PostAdmin)
admin.site.register(Cooperation)
admin.site.register(Contacts)
admin.site.register(Dialogs)
admin.site.register(Monologs)
admin.site.register(Projects )
url.py
urlpatterns = [
#Домашняя страница
url(r'', views.index, name ='index'),
#редактор статей
url(r'^ckeditor/', include('ckeditor_uploader.urls')),
]
settings.py
INSTALLED_APPS = [
'ckeditor',
'ckeditor_uploader',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'prosvet_logs',
]
CKEDITOR_UPLOAD_PATH = 'uploads/'
CKEDITOR_CONFIGS = {
'default': {
'toolbar': 'None'
},
}
Ответы (1 шт):
Автор решения: JS_ 88
→ Ссылка
Проблему решил. Дело было в базе данных. Удалил ее, удалил все миграции. Создал заново базу, применил миграцию. Все заработало.