限制mongoengine中ListField的长度

Limit length of ListField in mongoengine

我可以在没有 if 条件的情况下限制 mongoengie 中 ListField 数据的长度吗?

我需要这样的东西:

list = db.ListField(IntField(), max_length = 24)

在我的 document.

或者我必须在更新列表时检查列表的长度,如果列表的长度大于 24,则不更新它!

ListField 中没有类似这样的内容,但您可以使 自定义 ListField 提供 max_length 属性:

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')