以下是使用mongoengine的文档中的一些字段
_id = f.ObjectIdField(db_field="i", required=True)
name = f.StringField(db_field="n")
我想循环遍历Document中的每个字段,看看它们是否为XField类型且is_required为True,有没有办法做到这一点?
我知道您可以使用_fields
但是
for field in SomeDocument._fields:
print type(field) # always return 'str' not 'StringField' or 'ObjectField'
# Don't know how to check is_required
任何帮助都将不胜感激。
答案 0 :(得分:4)
你可以简单地使用这个
field_dict = SomeDocument.get_fields_info()
for field_name, field in field_dict.iteritems():
print field_name, field.required, field.__class__
答案 1 :(得分:0)
您遇到的问题是SomeDocument._fields
是一个字典,因此迭代它会给您键(字符串)。例如,如果您有一个字段foo
,则可以执行SomeDocument._fields['foo'].required
。当然,你可以这样做:
for field in SomeDocument._fields:
print '{} {} required.'.format(SomeDocument._fields[field], 'is' if SomeDocument._fields[field].required else 'is not')