python - PyMODM 获取没有 _cls 的对象
问题描述
我有一个以前填充了没有_cls
字段的文档的集合。
例如,现在我正在用这些类填充集合:
class SomeAnimal(MongoModel):
ID = fields.CharField(primary_key=True, validators=[UUID])
dob = fields.DateTimeField()
class Meta:
write_concern = WriteConcern(j=True)
collection_name = COLLECTION_NAME
class Pet(Animal):
name = fields.CharField(blank=True)
并Pet.objects.all()
仅返回从此脚本添加的文档(带有{'_cls':'Pet'}
属性)。
是否可以使用 Pymodm 获取这些文档,或者这种情况破坏了使用 ORM 的所有感觉,最好切换到 pymongo?
解决方案
来自文档:这是如何工作的?对于每个允许继承的模型类,pymodm 创建另一个名为 _cls 的隐藏字段,用于存储文档引用的模型的类。这样,不同类型的模型可以并置在同一个集合中,同时保留类型信息。
如果我们不希望这个 _cls 字段存储在我们的文档中怎么办?这可以通过将模型声明为最终模型来实现,这意味着它必须直接从 MongoModel 继承并且不能扩展:
class PageTheme(MongoModel):
theme_name = fields.CharField()
background_color = fields.CharField()
foreground_color = fields.CharField()
class Meta:
final = True
推荐阅读
- java - 根据 JAVA 中的特定键、值对将大 JSON 分解为单独的小 JSON
- python - 使用 seaborn 绘制预先分组的线数据
- flutter - Flutter bloc 库和高性能架构
- uwp - 最近更新后无法从 Xbox 商店下载应用程序
- java - Quartz Scheduler 如何在运行作业时处理意外的服务器崩溃或错误
- c - 编译除了 -o 之外没有标志的 C 代码
- excel - 无法运行宏 Listbox4_Change。宏可能在此工作簿中不可用或所有宏都已禁用
- docker - 自定义 docker 以分离模式运行输出
- reactjs - onClick 无法正常工作时遇到问题
- azure - 带有虚拟机的 Azure 高可用性