在flask/mongoengine文档中添加自定义id字段

问题描述 投票:0回答:2

我正在努力将应用程序从 Django/MySQL 改进为 Flask/mongo-engine,并且在创建带有

id
字段的模型时遇到问题。这是一个示例模型:

class Location(db.Document):
    id = db.IntField(unique=True)
    name = db.StringField(max_length=200, required=True)
    # other fields in the document ...

为了向后兼容,我需要按原样命名字段

id
。这曾经在 MySQL 中工作得很好,但 mongo-engine 给出了 ValidationError -- 对于上述模型的文档
Field is required: ['id'] Invalid Object ID: ['auto_id_0']

我还尝试使用

db_field
参数,如

id = db.IntField(db_field='l_id', unique=True)

...但无济于事。

请注意,我无意覆盖 mongodb 的默认

ObjectID
字段。 除了在反序列化时重命名该字段之外,还有其他解决方法吗?

flask mongoengine flask-mongoengine
2个回答
0
投票

尝试

class Location(db.Document):
    myid = db.IntField(db_field='id', unique=True)
    name = db.StringField(max_length=200, required=True)
    # other fields in the document ...

并对其进行操作,就像该字段名为 myid 一样。

Location.objects.create(myid=real_id)
Location.objects.filter(myid=real_id)

0
投票

这对我有用:

class Location(db.Document):
    _id = db.ObjectIdField()
    id = db.IntField(unique=True)
    name = db.StringField(max_length=200, required=True)
    # other fields in the document ...

这导致

id
IntField() 正确地从 Mongo 获取
id
字段。

© www.soinside.com 2019 - 2024. All rights reserved.