从mongoengine中的Document获取必填字段? [英] Get required fields from Document in mongoengine?

查看:140
本文介绍了从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆