在烧瓶/ mongoengine文档中添加自定义ID字段

问题描述:

我正在从Django/MySQL将应用程序改造成烧瓶/ mongo-engine &我无法创建带有id字段的模型。这是一个简单的模型:在烧瓶/ mongoengine文档中添加自定义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引擎为上述模型的文档提供ValidationError - Field is required: ['id'] Invalid Object ID: ['auto_id_0']

我也尝试使用db_field参数作为

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

...但无济于事。

请注意,我没有打算覆盖默认的ObjectID字段。是否有任何解决方法,除了重命名反序列化字段?

尝试

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 ... 

而且它仿佛场被命名为身份识别码操作。

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

这将覆盖存储ObjectID的默认id字段。无论如何,我尝试了很多,并且问了很多问题,但没有找到保留原始ID字段的方法,也没有添加名为'id'的应用程序级模型字段以及其他一些数据库字段名称。 因此,我最终在模型中添加了一个名为l_id的新字段,并在我的API响应中将其序列化。 – Utkarsh

+0

是的。我终于意识到,文档将_id复制到mongoengine中的id字段中,但是我为db_field指定了自定义名称 –