在flask/mongoengine文档中添加自定义id字段
我正在将一个应用程序从Django/MySQL改造为flask/mongo引擎&我在创建一个带有在flask/mongoengine文档中添加自定义id字段,flask,mongoengine,flask-mongoengine,Flask,Mongoengine,Flask Mongoengine,我正在将一个应用程序从Django/MySQL改造为flask/mongo引擎&我在创建一个带有id字段的模型时遇到了问题。这是一个示例模型: class Location(db.Document): id = db.IntField(unique=True) name = db.StringField(max_length=200, required=True) # other fields in the document ... 为了向后兼容,我需要名为as is的
id
字段的模型时遇到了问题。这是一个示例模型:
class Location(db.Document):
id = db.IntField(unique=True)
name = db.StringField(max_length=200, required=True)
# other fields in the document ...
为了向后兼容,我需要名为as is的字段id
。这在MySQL中正常工作,但mongo引擎提供了ValidationError--字段是必需的:['id']无效的对象id:['auto\u id\u 0']
,用于上述模型的文档
我还尝试使用db_字段
参数,如中所示
id = db.IntField(db_field='l_id', unique=True)
…但没有用
请注意,我无意覆盖mongodb的默认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 ...
并对其进行操作,就好像该字段名为myid一样
Location.objects.create(myid=real_id)
Location.objects.filter(myid=real_id)
这将覆盖存储ObjectID的默认id字段。无论如何,我试了很多次,询问了很多次,但没有找到一种方法可以保留原始的id字段,并添加一个名为“id”的应用程序级模型字段和其他一些db字段名。因此,我最终在模型中添加了一个名为l_id的新字段,并在API响应中序列化它。我最终意识到文档将_id复制到mongoengine中的id字段中,但我为db_字段指定了自定义名称