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技能目前非常生疏:)