Ошибка целостности Django: столбец ‘position’ не может быть нулевым

#python #django #django-models #django-cms

#python #django #django-модели #django-cms

Вопрос:

Я использую Django-CMS и создал несколько пользовательских плагинов, которые я использую на нескольких страницах, но на одной из страниц я не могу опубликовать, и я не могу копировать вложенные плагины, которые выдают мне одну и ту же ошибку в обеих ситуациях:

 Internal Server Error: /en/admin/cms/page/copy-plugins/
Traceback (most recent call last):
  File "libsite-packagesdjangocorehandlersbase.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "libsite-packagesdjangocorehandlersbase.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "libsite-packagesdjangoutilsdecorators.py", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "libsite-packagesdjangoviewsdecoratorscache.py", line 57, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "libsite-packagesdjangocontribadminsites.py", line 244, in inner
    return view(request, *args, **kwargs)
  File "libsite-packagesdjangoutilsdecorators.py", line 67, in _wrapper
    return bound_func(*args, **kwargs)
  File "libsite-packagesdjangoviewsdecoratorshttp.py", line 42, in inner
    return func(request, *args, **kwargs)
  File "libsite-packagesdjangoutilsdecorators.py", line 63, in bound_func
    return func.__get__(self, type(self))(*args2, **kwargs2)
  File "libsite-packagesdjangoviewsdecoratorsclickjacking.py", line 39, in wrapped_view
    resp = view_func(*args, **kwargs)
  File "libsite-packagesdjangoutilsdecorators.py", line 184, in inner
    return func(*args, **kwargs)
  File "libsite-packagescmsadminplaceholderadmin.py", line 363, in copy_plugins
    plugins, target_placeholder, target_language, target_plugin_id)
  File "libsite-packagescmsutilscopy_plugins.py", line 24, in copy_plugins_to
    old_parent_cache, no_signals))
  File "libsite-packagescmsmodelspluginmodel.py", line 319, in copy_plugin
    new_plugin.save()
  File "libsite-packagescmsmodelspluginmodel.py", line 240, in save
    self.parent.add_child(instance=self)
  File "libsite-packagestreebeardmp_tree.py", line 970, in add_child
    return MP_AddChildHandler(self, **kwargs).process()
  File "libsite-packagestreebeardmp_tree.py", line 361, in process
    newobj.save()
  File "libsite-packagescmsmodelspluginmodel.py", line 248, in save
    super(CMSPlugin, self).save(*args, **kwargs)
  File "libsite-packagesdjangodbmodelsbase.py", line 708, in save
    force_update=force_update, update_fields=update_fields)
  File "libsite-packagesdjangodbmodelsbase.py", line 736, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "libsite-packagesdjangodbmodelsbase.py", line 820, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "libsite-packagesdjangodbmodelsbase.py", line 859, in _do_insert
    using=using, raw=raw)
  File "libsite-packagesdjangodbmodelsmanager.py", line 122, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "libsite-packagesdjangodbmodelsquery.py", line 1039, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "libsite-packagesdjangodbmodelssqlcompiler.py", line 1060, in execute_sql
    cursor.execute(sql, params)
  File "libsite-packagesdjangodbbackendsutils.py", line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "libsite-packagesdjangodbbackendsutils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "libsite-packagesdjangodbbackendsmysqlbase.py", line 117, in execute
    six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])
  File "libsite-packagesdjangodbbackendsmysqlbase.py", line 112, in execute
    return self.cursor.execute(query, args)
  File "buildbdist.win-amd64eggMySQLdbcursors.py", line 205, in execute
    self.errorhandler(self, exc, value)
  File "buildbdist.win-amd64eggMySQLdbconnections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
IntegrityError: (1048, "Column 'position' cannot be null")
  

Я проверил в своей базе данных, и в cms_cmsplugin таблице существует столбец с именем position , но в нем нет записи position null . Вы хоть представляете, что происходит?

Комментарии:

1. position Столбец был определен таким образом, что он не может содержать NULL значения. Ваш код попытался создать строку, содержащую значение NULL для этого столбца, поэтому было вызвано исключение.

2. @JohnGordon Но у меня в моих пользовательских плагинах нет поля с именем position (я проверил). Поэтому position он должен быть из таблиц django-cms.

3. @patricia можете ли вы обновить свой вопрос, чтобы включить версии DjangoCMS и django? Я считаю, что эта проблема была исправлена в >= 3.3.x

4. @Paulo это действительно была проблема с версией, мне пришлось обновить версии django cms и django, а затем все заработало нормально.