首页 > 解决方案 > Django-Oscar 没有这样的表:删除订单时的 main.customer_communicationeventtype

问题描述

我有一个从沙盒构建的 Django-Oscar 电子商务应用程序。我并没有真正改变代码中的任何东西,而是添加了一些产品和东西。

我尝试添加演示订单,但由于某种原因失败了,但创建了订单对象。当我试图从 django-admin 页面中删除对象时,它给了我以下错误:

django.db.utils.OperationalError: no such table: main.customer_communicationeventtype
Django v3.0.9
Basic SQLite3 DB

完整的追溯:

Internal Server Error: /admin/order/order/
Traceback (most recent call last):
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/backends/utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py", line 396, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: main.customer_communicationeventtype

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/lib/python3.7/contextlib.py", line 74, in inner
    return func(*args, **kwds)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/contrib/admin/options.py", line 607, in wrapper
    return self.admin_site.admin_view(view)(*args, **kwargs)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/contrib/admin/sites.py", line 231, in inner
    return view(request, *args, **kwargs)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/utils/decorators.py", line 43, in _wrapper
    return bound_method(*args, **kwargs)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/contrib/admin/options.py", line 1720, in changelist_view
    response = self.response_action(request, queryset=cl.get_queryset(request))
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/contrib/admin/options.py", line 1390, in response_action
    response = func(self, request, queryset)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/contrib/admin/actions.py", line 40, in delete_selected
    modeladmin.delete_queryset(request, queryset)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/contrib/admin/options.py", line 1091, in delete_queryset
    queryset.delete()
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/models/query.py", line 722, in delete
    deleted, _rows_count = collector.delete()
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/models/deletion.py", line 314, in delete
    count = qs._raw_delete(using=self.using)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/models/query.py", line 736, in _raw_delete
    return sql.DeleteQuery(self.model).delete_qs(self, using)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/models/sql/subqueries.py", line 75, in delete_qs
    cursor = self.get_compiler(using).execute_sql(CURSOR)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1152, in execute_sql
    cursor.execute(sql, params)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/backends/utils.py", line 100, in execute
    return super().execute(sql, params)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/backends/utils.py", line 68, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/backends/utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/backends/utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
  File "/Users/siddheshpisal/.pyenv/versions/3.7.1/envs/oscar/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py", line 396, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: main.customer_communicationeventtype

标签: pythondjangodjango-oscar

解决方案


您使用的沙盒代码和 Oscar 版本不兼容。

在最新版本的 Oscar (2.1) 中,通信模型已移至新应用程序 ( communication)。您似乎正在使用 Oscar 2.1 版本和 2.1 之前的沙盒副本。

Oscar 2.1发行说明中记录了项目更新所需的步骤。


推荐阅读