2013-03-16 2 views
0

Как я могу проверить, что мое поле desc требуется, а поле моей категории необязательно?Mongokit validate dict внутри списка

class Mydoc(Document): 

    structure = { 
     "name": unicode, 
     "items": [{ 
      "category": int, 
      "desc": unicode 
     }] 
    } 

required_fields = ["name", "items", "items.desc"] # Error: items has no attribute 
                # desc, it is a list not a dict. 

Как я могу проверить категории внутри списка?

UPDATE

https://groups.google.com/forum/?fromgroups=#!topic/mongokit/GP5AgaMG6T4

ответ

2

Хитрый момент здесь является то, что мы не знаем, сколько элементов есть. Mongokit не позволяет вам указать вложенный объект по мере необходимости, потому что он может быть очень медленным, если у вас много элементов.

Итак, mongokit не разрешает required_fields и default_values ​​во вложенных объектах.

Однако Mongokit очень легкий и может быть настроен очень легко, если это необходимо:

class MyDoc(Document): 
    structure = { 
     "name": unicode, 
     "items": [{ 
      "category": int, 
      "desc": unicode 
     }] 
    } 

    def validate(self, *args, **kwargs): 
     super(MyDoc, self).validate(*args, **kwars) 
     for item in self["items"]: 
      assert item["desc"], "desc is required: %s" % item 
Смежные вопросы