【问题标题】:Primary key error logging in Django Admin using MongoDB使用 MongoDB 在 Django Admin 中记录主键错误
【发布时间】:2021-10-21 16:14:07
【问题描述】:

首先,我是 MongoDB 的新手,这是我第一个使用它的应用程序,所以我知道我缺乏文档阅读,但我正在尝试找到解决这个问题的方法,因为阅读的文档表明一切都可能无需更改即可正常工作。

我已经使用 MongoDB 数据库正确配置了设置文件并创建了我的模型。

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'mydatabase',
    }
}

我已经使用django-admin createsuperuser 创建了一个超级用户,但是当我尝试登录到管理面板时,我收到了这个错误。

ValueError: Cannot force an update in save() with no primary key.

我知道 MongoDB 没有主键和外键系统,它基于类似 JSON 的类型对象,但文档说它可以很好地使用它,所以我认为它之前已经准备好运行它。

有什么线索吗? 谢谢。

【问题讨论】:

    标签: django mongodb django-admin


    【解决方案1】:

    这个错误表明id(primsry_key)不是由Django创建的

    原因:

    1. makemigrations你的 Django 项目过去用于 SQL 数据库(mysql、sqlite 等)或 Mongo Cloud 数据库,然后只需在没有makemigrations 的情况下迁移你的项目。

    2. 创建一个auth_user 集合(MongoDB 中的集合几乎就像 SQL 数据库中的表)或过去尝试createsuperuser,然后尝试makemigrations 并迁移您的项目。

    解决方案:

    1. 通过 MongoDB Compass 连接到您的数据库

    2. 删除您的 project 数据库

    3. makemigrations 并再次迁移您的 Django 项目

    4. createsuperuser

    最后,检查id(django primary_key)_id(mongodb objectId)auth_user 和其他集合中是否可用。

    【讨论】:

    • 欢迎来到 Stack Overflow。我已更新您的答案以帮助改进格式。与其使用数据的屏幕截图,不如将数据包含为文本,并使用 Markdown 将其格式化为代码。你能做那个修改吗?
    【解决方案2】:

    我按照 Jeremy 的回答做了,它解决了我的问题,但我必须手动添加一个 id。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 2021-02-01
      • 1970-01-01
      相关资源
      最近更新 更多