从mongoengine中的Document获取必填字段? [英] Get required fields from Document in mongoengine?
本文介绍了从mongoengine中的Document获取必填字段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望能够获得我创建的文档所需的列表或某种类型的字段集.例如,这是我的文档:
I want to be able to get a list or some sort of set of fields that are required by the document i've created. For instance, here is my document:
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()
^从本文档中,我应该收到:
^From this document I should receive:
["nickName","password","joinDate","lastVisited"]
作为必填字段的结果.这可能吗?如果是这样,我怎么能达到预期的效果.
as results for being required fields. Is this possible? If so, how can I achieve the desired result.
提前谢谢!
推荐答案
您可以遍历Class._fields属性.
You can loop through the Class._fields property.
如果您的班级被称为用户",则可以执行以下操作:
If your class was called User you could do this:
>>> [k for k,v in User._fields.iteritems() if v.required]
['joinDate', 'password', 'nickName', 'lastVisited']
要获得基于创建的排序列表,可以使用创建计数器,如下所示:
To get a sorted list based on creation you can use the creation counter like so:
>>> 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']
这篇关于从mongoengine中的Document获取必填字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文