如何在PyMODM/Mongoengine模型中设置字段默认值为Null
解决方案
- 你遇到的两个问题核心是混淆了PyMODM和MongoEngine、SQLAlchemy的字段参数规则,PyMODM的字段配置逻辑和其他ORM有明显差异,按下面方法修改即可:
问题1:null=True 抛出TypeError
PyMODM字段没有null这个配置参数,该参数是SQLAlchemy或MongoEngine的用法,直接删除字段定义里的null=True即可解决报错。
问题2:default=None 不生效,字段被丢弃
PyMODM默认开启了omit_none规则:当字段值为None时,会直接省略该字段不写入MongoDB,不会存为Null值。要让None值作为Null存入数据库,给对应字段加上omit_none=False参数即可。
修改后的字段示例
# 仅给price_dollar字段开启存Null的配置 price_dollar = fields.FloatField(blank=True, default=None, omit_none=False)
如果需要整个模型的所有字段都默认保留None值写入Null,可以在Meta类全局配置:
class Live_pr(MongoModel): # 其他字段定义保持不变 class Meta: cascade = True omit_none = False # 全局关闭省略None值的规则
修改后你现有的pipeline逻辑不需要调整,当item["price"]为空时,字段会自动使用默认的None值,存入MongoDB就是Null。
内容的提问来源于stack exchange,提问作者drake1994
相关产品推荐
相关产品推荐

