Django 与 Djongo,EmbeddedFields 返回模型尚未加载

Posted

技术标签:

【中文标题】Django 与 Djongo,EmbeddedFields 返回模型尚未加载【英文标题】:Django with Djongo, EmbeddedFields returns Models aren't loaded yet 【发布时间】:2020-09-19 12:19:43 【问题描述】:

我有一个新的 Django 项目设置。我只安装了一个包 Djongo。我有一个本地 MongoDB 正在运行。

如果我在我的应用程序中使用 models.py 中的 CharFields 编写一个简单的模型,则迁移工作正常。 但是当我使用 EmbeddedFields 时,它会返回一个错误。我已经从 Djongo 文档中复制了代码来测试应该可以工作的代码。 Code Source

这就是我的 models.py 中的内容:

from djongo import models

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    class Meta:
        abstract = True

class Entry(models.Model):
    _id = models.ObjectIdField()
    blog = models.EmbeddedField(
        model_container=Blog
    )

    headline = models.CharField(max_length=255)    
    objects = models.DjongoManager()

运行py manage.py makemigrations时的错误信息

File "C:\Users\FelixEklöf\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\apps\registry.py", line 178, in get_models
        self.check_models_ready()

File "C:\Users\FelixEklöf\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\apps\registry.py", line 140, in check_models_ready
raise AppRegistryNotReady("Models aren't loaded yet.")

django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

【问题讨论】:

我也有同样的问题,你找到解决办法了吗? 下面的答案为我解决了这个问题。将 Djongo 降级到 1.3.1。 感谢您的回答,但这对我来说有点安全问题,因为目前官方版本是 2.2 你只需要降级 Djongo 而不是 Django。 【参考方案1】:

您好,您使用的是哪个版本?我使用了 1.3.2 并且遇到了同样的问题。当我将它降级到 1.3.1 时它就消失了

【讨论】:

遇到了同样的问题,可惜 django 不支持“原生”MongoDB 集成。对我来说,降级软件版本是一个非常糟糕的主意,但目前是唯一的解决方案:/

以上是关于Django 与 Djongo,EmbeddedFields 返回模型尚未加载的主要内容,如果未能解决你的问题,请参考以下文章

尝试重置密码时出现 Djongo + Django + MongoDB Atlas DatabaseError

Djongo

django mongodb 使用 djongo 和 pymongo 连接

Heroku部署后Django(djongo)无法连接到MondoDB Atlas

Djongo数据库引擎上的Django Admin外键错误

将 djongo (Mongo ORM) 集成到 Django Rest 框架中