Mongokit在列表中验证字典

时间:2013-03-16 22:34:45

标签: python mongodb pymongo mongokit

如何验证我的desc字段是否必需且我的类别字段是可选的?

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.

如何验证列表中的类别?

更新

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

1 个答案:

答案 0 :(得分: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