Python 验证mongoengine.Dictfield值的类型
我有这样一个自定义文档:Python 验证mongoengine.Dictfield值的类型,python,mongoengine,Python,Mongoengine,我有这样一个自定义文档: import mongoengine class MYDOC(mongoengine.Document): ... intValuesDict = mongoengine.DictField() StringsListValuesDict = mongoengine.DictField() ... 当文档即将添加到数据库中时,我希望mongoengine仅当intValuesDict字段的值是整数且StringsListValuesDict字段的值是
import mongoengine
class MYDOC(mongoengine.Document):
...
intValuesDict = mongoengine.DictField()
StringsListValuesDict = mongoengine.DictField()
...
当文档即将添加到数据库中时,我希望mongoengine仅当intValuesDict字段的值是整数且StringsListValuesDict字段的值是字符串列表时才接受并保存它
示例:
对于此文档,它会引发错误,并且文档不应保存在DB中,因为StringsListValuesDict的值不是字符串列表([12,13]
)
由于intValuesDict的值不是整数(“12”
),因此此值也会出错:
应接受并保存此文档,因为intValuesDict中的12
和13
是整数,而[“12”,“13”]
和[“abc”,“def”]
是字符串列表:
{
...
intValuesDict: {
"key1": 12,
"key2": 13
}
StringsListValuesDict: {
"key_1": ["12", "13"],
"key_2": ["abc", "def"]
}
..
}
一个解决方案是创建一个函数,在将dicts值保存到DB之前验证dicts值的类型,但我想知道mongoengine是否可以帮我做到这一点
谢谢 Mongoengine医生说的是- “通常,可以使用嵌入式文档代替字典—— 通常建议这样做,因为字典不支持验证 或自定义字段类型。“ 我想你应该调查一下 最好的办法是编写自定义验证函数。它应该覆盖文档的
clean
方法。如果您的输入数据不适合您-只需提出ValidationError
。这是一个例子
{
...
intValuesDict: {
"key1": "12",
"key2": 13
}
StringsListValuesDict: {
"key_1": ["12", "13"],
"key_2": ["abc", "def"]
}
..
}
{
...
intValuesDict: {
"key1": 12,
"key2": 13
}
StringsListValuesDict: {
"key_1": ["12", "13"],
"key_2": ["abc", "def"]
}
..
}