You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoEngine使用DateTimeField字段类实例赋值导致持久化失败的问题咨询

MongoEngine使用DateTimeField字段类实例赋值导致持久化失败的问题咨询

最近我开始用MongoEngine库来读写MongoDB的数据,结果碰到了一个奇怪的行为,想跟大家请教下。

我在代码里定义了这样一个模型类:

class CustomerRequest(BaseModel):
   type = fields.EnumField(RequestType)
   status = fields.EnumField(Status, default=Status.NEW)
   request_date = fields.DateTimeField(db_field='requestDate')

然后我创建了一个CustomerRequest对象:

customer_request = CustomerRequest(type=Type.complaints, status=Status.Opened, request_date=DateTimeField("2023-03-01 00:00:00"))

接着用MongoEngine的save()方法持久化这个对象:

customer_request.save()

执行完这行代码后,我收到了这样的错误:

Validation Failed: cannot parse date "<mongoengine.fields.datetimefield...>"

不过我发现,如果用Python原生的datetime对象来赋值request_date,创建实例的代码改成这样:

customer_request = CustomerRequest(type=Type.complaints, status=Status.Opened, request_date=datetime("2023-03-01 00:00:00"))

之后再执行持久化就完全没问题,不会报错。

我现在有点困惑:既然CustomerRequest里把request_date定义成了DateTimeField类型,为什么保存的时候却要求传入原生的datetime对象呢?难道我需要定义两个不同的CustomerRequest类吗?一个用来描述数据库里的数据结构,另一个用来作为Python代码里的业务对象?

备注:内容来源于stack exchange,提问作者CrazySynthax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:30:25