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
相关产品推荐
相关产品推荐

