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
django mongodb 使用 djongo 和 pymongo 连接