问题标签 [restframeworkmongoengine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
803 浏览

python - 无法通过“id”访问 mongo 条目

我有一个包含一些字段(_id、id、名称、状态等)的 Mongo 文档。我在课堂上写了一个典型的文档(就像模型一样):

使用这个模型,我尝试访问它们:

我试图获取“mod”文档中的所有条目:它成功了!我可以获取所有条目的所有字段(id、name 等...)

我尝试过滤并返回字段为“status”=“Incomplete”的所有条目:它可以正常工作,就像以前一样。我尝试过滤其他字段:它也可以

但是当我尝试使用 id 过滤时,我无法得到结果:

所以我尝试了mod.objects.get(id=102)

Mod 匹配查询不存在,所以它不能识别id字段,但是当我写的时候mod_[0].id我确实有一个结果,那么有什么问题呢?

编辑:我相信在编写 mod.objects(id=102) 时,字段id被解释为 _id。如何指定,我想通过id而不是_id查询?我的文档已经写好了,所以我不能更改字段的名称。

0 投票
2 回答
1885 浏览

python - 在使用 django restframework 多个数据库时,serializer.is_valid() 总是去默认数据库进行验证

我正在使用 django restframework 并想处理多个数据库。我正在使用 django 函数 using(alias) 和 switch_db(alias) 来在我想要获取、发布或更新数据时在数据库之间手动切换。

我在发布和更新 data.ie 时遇到问题,每当调用 serializer.is_valid() 时。

serializer.is_valid() 将首先检查 model.py 文件中的 db_alias。如果我没有在 meta 下指定 db_alias,它将选择默认数据库进行验证。如果我在模型中指定 db_alias,它将选择该数据库进行验证。

但我不想在模型中指定 db_alias,因为我的用例是根据我的视图文件中的某些逻辑将数据存储在不同的数据库中。因此,我想动态地从视图中选择数据库并希望在其中存储数据。

几乎我已经实现了,但是当我的模型具有参考字段时我遇到了问题。在这种情况下,serializer.is_valid 将进入默认数据库以验证该引用字段。

所需详细信息:我正在使用 mongoengine(0.9.0)、文档、文档序列化程序。

我的文件如下:

模型.py:

序列化程序.py:

视图.py:

设置.py:

pip freeze(安装版本):

我在调用 serializer.save() 时覆盖了在序列化程序中创建以处理数据库,但如何处理 serializer.is_valid()。

我的项目一直卡在这一点上。任何帮助将不胜感激...

0 投票
1 回答
447 浏览

django - 验证 mongoengine 序列化程序中的引用字段

我将djangomongoenginemongoengine-rest-framework一起使用。

如本文所示,在Serializer的Meta 类中指定related_model_validations字段

如果ReferenceField引用的文档丢失,可以帮助实现以下结果:

因此,不是引发验证异常,而是修改 json。

但是,这篇文章是为旧版本的mongoengine-rest-framework编写的,在当前版本中,Serializer Meta class中没有字段related_model_validations

那么如何在当前版本的 mongoengine-rest-framework 中达到类似的效果呢?

0 投票
0 回答
92 浏览

django-rest-framework - 使用 MongoEngine 获取集合中所有文档中的所有嵌入式文档

我试过在互联网上搜索这个,但似乎找不到任何东西(对不起,如果它在这里某处)。

我将 Mongoengine 与 Django 一起使用,并具有以下模型:

我想要做的是返回定义集合中的每个“事件”,而不是视图中的“定义”。

有任何想法吗?

非常感谢!

****更新****

我找到了解决方法:

我在 Django 中将事件创建为单独的应用程序,并将 ReferenceField 设置为从其他应用程序导入的定义。

在 EventView 中,我使用定义的 ID 设置参考字段。

视图.py

虽然我仍然想知道是否可以过滤掉所有文档中的所有嵌入文档。

0 投票
1 回答
815 浏览

dictionary - Mongoengine 序列化字典(带有嵌套字典)?

我已经从 Django 中的上传文件创建了一个字典。

这本字典有一个嵌套的字典列表:

该模型也代表了字典的深度。

POST中,我有以下内容将文件分割成上面的 Dict (该文件是一个简单的文本文件):

我最终会整理一下。制作字典后,如何使用序列化程序对其进行序列化?

是否可以将其插入序列化程序?

如果不是,我如何通过验证将其全部输入数据库?

我已经尝试过json.dumps()JsonRequst()然后将它们放入data=序列化程序但得到Unable to get repr for <class '....'>

我对 Django 和 MongoDB 很陌生,所以如果您需要更多信息,我可以提供:)

谢谢!

更新

按照答案中的建议,将模型的列表字段更改为 EmbeddedDocumentListField。

已回答

感谢 Boris 在下面的建议,它指出了我最初没有得到的错误。我有一个错字,直接将字典传递给FileSerializer(data=file)像魅力一样的作品!:)

0 投票
1 回答
155 浏览

python - 文档中的 EmbeddedDocument 未初始化

我是第一次使用 drf_mongoengine,但在设置模型时遇到了问题。我希望文件像这样初始化:

创建的文档没有“元数据”字段。我错过了什么?

模型:类检测器(文档):名称 = fields.StringField(null=True)元数据 = fields.EmbeddedDocumentField(元数据,null=False)

序列化器:

看法:

0 投票
2 回答
479 浏览

django - NotUniqueError 使用 django 和 mongoengine

我正在使用 django 和 mongoengine。当我尝试使用 .save() 方法保存新创建的实例时,这是我一次又一次遇到的错误。我第一次能够创建模型实例,但之后任何发布请求都会引发此错误。这是我的文档结构:

这是我发出帖子请求的地方:

但我发现了错误:

NotUniqueError: 试图保存重复的唯一键(E11000 重复键错误集合:project.client index: UUID_1 dup key: { : null })

我被困在这里。请告诉我哪里出错了,因为我是 django 的菜鸟。任何帮助将不胜感激。

0 投票
0 回答
488 浏览

django - 序列化器对象没有属性“_writable_fields”

我已经开始用 mongodb 在 django 中编写一个应用程序(我的第一次)。但是我收到了与我的 DRF-mongoengine 序列化程序相关的错误。错误内容如下:

全回溯如下:

这似乎是 DRF-mongoengine 版本的一些问题,因为当我使用 3.3.0 时,我遇到了一个错误,即没有名为“get_field_names”的属性。为了解决这个问题,我移到了最新版本 3.3.1,并开始获得这个版本。我的 requirements.txt 文件是:

我的 serializers.py 文件是:

我的模型是:

关于会发生什么问题的任何想法?

0 投票
1 回答
121 浏览

django - 使用 django 使用 rest_framework_mongoengine 时出错

在我尝试输入 RESTapi url 时序列化视图中的模型后出现错误设置。DATABASES 配置不正确。请提供 ENGINE 值。查看设置文档以获取更多详细信息。

使用 mongoengine 所以没有设置任何数据库。在尝试 api 集成之前完美运行

)

}

0 投票
1 回答
38 浏览

django - Django Mongoengine 领先的空白被剥离

我有一个小问题,我正在努力寻找解决方案。

目前,当我收到来自 Django(1.11.5)返回的带有 JSON 数据的 POST 的结果时,某些值中的所有前导空格都完全消失了,但都在保存的单词之间。

是否有 MongoEngine 的设置可以在 StringFields 上停止此操作?

例如:我在 Python(3.6.2) 中发送请求:

我从请求内容中返回:

我正在使用 MongoEngine (0.14.3)、django-restframwork-mongoengine (3.3.1) 和 viewsets.ModelViewSet btw :)