PyMODM获取不带_cls的对象

2024-06-26 17:55:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个以前填充了没有_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


Tags: keyname文档idtruefieldsuuidclass
1条回答
网友
1楼 · 发布于 2024-06-26 17:55:32

从文档: 这是怎么回事?对于每个允许继承的模型类,pymodm都会创建另一个名为_cls的隐藏字段,该字段存储文档引用的模型类。这样,不同类型的模型可以在同一个集合中并置,同时保留类型信息

如果我们不想在文档中存储此_cls字段,该怎么办?这可以通过将模型声明为final来实现,这意味着它必须直接从MongoModel继承,并且不能扩展:

class PageTheme(MongoModel):
    theme_name = fields.CharField()
    background_color = fields.CharField()
    foreground_color = fields.CharField()

    class Meta:
        final = True

相关问题 更多 >