Ограничить длину ListField в другом

1

Могу ли я ограничить длину ListField данных в mongoengie без if условие?

Мне нужно что-то вроде этого:

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

в моем document.

Или мне нужно проверить длину моего списка, когда он будет обновляться, и не обновлять его, если длина моего списка больше 24!

Теги:
limit
mongoengine

1 ответ

4
Лучший ответ

Там нет ничего, как это встроенный в 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')
  • 0
    Просто не в себе и не смотрю прямо сейчас, но нельзя ли применять SortedListField с аргументами, которые эффективно делают $ slice в соответствии с обычными операциями с массивами MongoDB? Я, кажется, смутно помню тестовый пример, делающий это. Но если вы можете подтвердить, что это не так, тогда здорово.
  • 0
    вау, я не думаю о настраиваемом Listfield, это здорово, но я не могу понять синтаксис, такой как **kwargs и функции super и validate не могли бы вы рассказать о них?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню