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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:30:50