在Django中使用PyModm定义支持多类型的MongoDB模型字段
在PyModm中定义支持多种类型的字段
PyModm 提供了 GenericField 来处理任意类型的数据存储,刚好能满足你需要让value字段支持列表、字符串或整数的需求。
方案1:直接使用GenericField
直接将原有的CharField替换为GenericField即可,它默认支持存储任意类型的数据:
from pymodm import MongoModel, fields class DefinitionEntity(MongoModel): version = fields.IntegerField(required=True) value = fields.GenericField(required=True)
方案2:自定义字段严格限制类型
如果需要精确限定只能存入列表、字符串、整数这三类数据,可以自定义一个字段并添加验证逻辑:
from pymodm import MongoModel, fields from pymodm.errors import ValidationError class MultiTypeField(fields.GenericField): def validate(self, value): allowed_types = (list, str, int) if not isinstance(value, allowed_types): raise ValidationError(f"该字段仅支持以下类型:{allowed_types}") super().validate(value) class DefinitionEntity(MongoModel): version = fields.IntegerField(required=True) value = MultiTypeField(required=True)
方案1适合不需要严格类型校验的场景,实现简单;方案2则能避免存入不符合要求的数据,更严谨。
内容的提问来源于stack exchange,提问作者Ankit Chouhan
相关产品推荐
相关产品推荐

