验证 mongoengine.Dictfield 值的类型
Validate the type of mongoengine.Dictfield values
我有一个这样的自定义文档:
import mongoengine
class MYDOC(mongoengine.Document):
...
intValuesDict = mongoengine.DictField()
StringsListValuesDict = mongoengine.DictField()
...
当一个文档要添加到数据库中时,我希望mongoengine接受它并仅当intValuesDict字段的值为整数且[=37的值时才保存它=]StringsListValuesDict 字段是字符串列表。
示例:
对于此文档,它应该引发错误并且文档不应保存在数据库中,因为 StringsListValuesDict 的值不是字符串列表([12, 13]
).
{
...
intValuesDict: {
"key1": 12,
"key2": 13
}
StringsListValuesDict: {
"key_1": [12, 13],
"key_2": ["abc", "def"]
}
..
}
这个也是错误的,因为 intValuesDict 的值不是整数 ("12"
):
{
...
intValuesDict: {
"key1": "12",
"key2": 13
}
StringsListValuesDict: {
"key_1": ["12", "13"],
"key_2": ["abc", "def"]
}
..
}
应该接受并保存此文档,因为 intValuesDict 中的 12
和 13
是整数,而 ["12", "13"]
和 ["abc", "def"]
来自 StringsListValuesDict 的是字符串列表:
{
...
intValuesDict: {
"key1": 12,
"key2": 13
}
StringsListValuesDict: {
"key_1": ["12", "13"],
"key_2": ["abc", "def"]
}
..
}
一个解决方案是创建一个函数来验证字典值的类型,然后再将它们保存到数据库中,但我想知道 mongoengine 是否可以为我做这个。
谢谢!
Mongoengine 文档说的是 -
"Often, an embedded document may be used instead of a dictionary –
generally this is recommended as dictionaries don’t support validation
or custom field types."
我认为你应该研究一下 Mongo DB Document validation
最好的想法是编写自定义验证函数。它应该覆盖文档的 clean
方法。如果您的输入数据不适合您 - 只需提高 ValidationError
。这是一个 example.
我有一个这样的自定义文档:
import mongoengine
class MYDOC(mongoengine.Document):
...
intValuesDict = mongoengine.DictField()
StringsListValuesDict = mongoengine.DictField()
...
当一个文档要添加到数据库中时,我希望mongoengine接受它并仅当intValuesDict字段的值为整数且[=37的值时才保存它=]StringsListValuesDict 字段是字符串列表。
示例:
对于此文档,它应该引发错误并且文档不应保存在数据库中,因为 StringsListValuesDict 的值不是字符串列表([12, 13]
).
{
...
intValuesDict: {
"key1": 12,
"key2": 13
}
StringsListValuesDict: {
"key_1": [12, 13],
"key_2": ["abc", "def"]
}
..
}
这个也是错误的,因为 intValuesDict 的值不是整数 ("12"
):
{
...
intValuesDict: {
"key1": "12",
"key2": 13
}
StringsListValuesDict: {
"key_1": ["12", "13"],
"key_2": ["abc", "def"]
}
..
}
应该接受并保存此文档,因为 intValuesDict 中的 12
和 13
是整数,而 ["12", "13"]
和 ["abc", "def"]
来自 StringsListValuesDict 的是字符串列表:
{
...
intValuesDict: {
"key1": 12,
"key2": 13
}
StringsListValuesDict: {
"key_1": ["12", "13"],
"key_2": ["abc", "def"]
}
..
}
一个解决方案是创建一个函数来验证字典值的类型,然后再将它们保存到数据库中,但我想知道 mongoengine 是否可以为我做这个。
谢谢!
Mongoengine 文档说的是 -
"Often, an embedded document may be used instead of a dictionary – generally this is recommended as dictionaries don’t support validation or custom field types."
我认为你应该研究一下 Mongo DB Document validation
最好的想法是编写自定义验证函数。它应该覆盖文档的 clean
方法。如果您的输入数据不适合您 - 只需提高 ValidationError
。这是一个 example.