1

我正在将一个应用程序从 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)

……但无济于事。

请注意,我无意覆盖ObjectIDmongodb 的默认字段。除了在反序列化时重命名字段之外,是否有任何解决方法?

4

1 回答 1

1

尝试

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)
于 2016-07-14T09:05:16.183 回答