【问题标题】:OperationalError at /admin/products/product/add/ no such table: main.auth_user__old/admin/products/product/add/ 处的 OperationalError 没有这样的表:main.auth_user__old
【发布时间】:2020-10-06 20:28:48
【问题描述】:

我在 Django 上编辑一个项目,所以我删除了我的 pychachemigrationsdb.sqlite3 并创建了一个新的 superuser 登录到管理页面。在我创建产品并在管理页面上按“保存”后,出现“/admin/products/product/add/ 处的操作错误:没有此类表:main.auth_user__old”的错误。我曾尝试通过重新安装 Django 2.0.7 并再次执行 ma​​kemigrationsmigrate 等解决方案来解决此问题,但到目前为止我尝试过的解决方案都没有奏效。有谁知道可能的解决方案?

【问题讨论】:

  • 我可以看看你的models.py文件吗?
  • 这是我的models.py文件from django.db import models # Create your models here. class Product(models.Model): title = models.CharField(max_length=120) description = models.TextField(blank=True, null=True) price = models.DecimalField(decimal_places=2, max_digits=10000) summary = models.TextField()
  • 尝试升级你的 django 'pip install Django --upgrade' 并重新迁移一切。
  • 刚刚这样做了,现在当我单击 Django 管理站点上的产品部分时,我立即收到一条新的错误消息,说 TemplateSyntaxError at /admin/products/product/ Invalid block第 45 行的标记:“change_list_object_tools”,预期为“endblock”。您是否忘记注册或加载此标签?
  • 你应该有 {% 而不是 { %,并且你在模板中遇到了那些拼写错误,或者你忘记了结束块。检查你的模板是否正确

标签: django django-models django-admin django-errors


【解决方案1】:

解决方案:升级到最新的 Django 版本(至少 3.1.7)

修复步骤:

  • 停止运行 django 网络服务器,Ctrl-C
  • 删除db.sqlite3
  • 已卸载 Django 旧版本
  • 使用 pip install django 或最新版本 3.1.7 安装最新版本的 Django
  • 问题python manage.py makemigrations
  • 问题python manage.py migrate
  • 使用python manage.py createsuperuser 创建超级用户
  • 发出python manage.py runserver(或端口8080)
  • 导航到http://127.0.0.1:8000/admin/
  • 您将能够成功手动添加表格。

【讨论】:

    【解决方案2】:

    最常见的错误原因是您在创建超级用户后忘记迁移。创建超级用户后立即迁移解决了我的问题。运行以下命令:

    python manage.py migrate
    

    您应该看到以下操作的正常状态:

    Apply all migrations: admin, auth, contenttypes, sessions, {APP_NAME}
    

    打开您的 shell 或管理员 admin 并尝试再次添加该产品。

    【讨论】:

      猜你喜欢
      • 2019-05-28
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 2021-03-14
      • 2019-05-17
      • 2017-05-03
      • 2019-05-07
      相关资源
      最近更新 更多