Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mongoengine中ListField的限制长度_Python_Mongodb_Limit_Mongoengine_Listfield - Fatal编程技术网

Python mongoengine中ListField的限制长度

Python mongoengine中ListField的限制长度,python,mongodb,limit,mongoengine,listfield,Python,Mongodb,Limit,Mongoengine,Listfield,在没有if条件的情况下,我是否可以限制mongoengie中列表字段数据的长度 我需要这样的东西: list = db.ListField(IntField(), max_length = 24) 在我的文档中 或者,当我的列表要更新时,我必须检查它的长度,如果我的列表长度大于24,就不要更新它 在ListField中没有类似的内容,但是您可以通过max\u length属性使自定义ListField: class MyListField(ListField): def __init_

在没有
if
条件的情况下,我是否可以限制mongoengie中
列表字段
数据的长度

我需要这样的东西:

list = db.ListField(IntField(), max_length = 24)
在我的
文档中


或者,当我的列表要更新时,我必须检查它的长度,如果我的列表长度大于24,就不要更新它

ListField
中没有类似的内容,但是您可以通过
max\u length
属性使自定义
ListField

class MyListField(ListField):
    def __init__(self, max_length=None,  **kwargs):
        self.max_length = max_length
        super(MyListField, self).__init__(**kwargs)

    def validate(self, value):
        super(MyListField, self).validate(value)

        if self.max_length is not None and len(value) > self.max_length:
            self.error('Too many items in the list')

我只是一时想不起来,现在不看,但不能应用于参数,有效地按照正常的MongoDB数组操作?我似乎模模糊糊地记得有一个测试用例在这样做。但是如果你能确认这不是真的,那就太好了。哇,我不认为自定义列表字段看起来很好,但我不理解一些语法,比如
**kwargs
super
validate
函数,你能告诉我它们吗?@MDK当然,
super(MyListField,self)。\uu init
将调用
列表字段
\uuuu init\uuuu()
方法(请参阅),谈到
**kwargs
-请参阅
Field.validate()
方法是mongoengine字段的基本验证方法,请参见如何实现
StringField
示例。希望这能有所帮助。@NeilLunn从调查中了解到,我不认为切片是以特殊的方式处理的,但我可能错了,我的mongodb和mongoengine技能目前非常生疏:)