Alf*_*edN 9 python mongodb mongoengine
我希望能够获得我创建的文档所需的列表或某些字段集.例如,这是我的文件:
nickName = StringField(required=True)
password = StringField(required=True)
firstName = StringField()
lastName = StringField()
joinDate = DateTimeField(required=True)
lastVisited = DateTimeField(required=True)
subscriptions = DictField(field=ObjectIdField())
isActivated = BooleanField(default=True)
profileImage = FileField()
isModerator = BooleanField(default=False)
description = StringField()
location = GeoPointField()
email = EmailField()
settings = DictField()
Run Code Online (Sandbox Code Playgroud)
^从这份文件我应该收到:
["nickName","password","joinDate","lastVisited"]
Run Code Online (Sandbox Code Playgroud)
作为必填字段的结果.这可能吗?如果是这样,我怎样才能达到预期的效果.
提前致谢!
Ros*_*oss 16
您可以遍历Class._fields属性.
如果您的班级被称为用户,您可以这样做:
>>> [k for k,v in User._fields.iteritems() if v.required]
['joinDate', 'password', 'nickName', 'lastVisited']
Run Code Online (Sandbox Code Playgroud)
要根据创建获取排序列表,您可以使用创建计数器,如下所示:
>>> from operator import itemgetter
>>> required_fields = ((v.creation_counter, k) for k,v in User._fields.iteritems() if v.required)
>>> sorted_required_fields = map(itemgetter(1), sorted(required_fields, key=itemgetter(0)))
>>> sorted_required_fields
['nickName', 'password', 'joinDate', 'lastVisited']
Run Code Online (Sandbox Code Playgroud)