Python Mongoengine - 获取文档属性的类型
Python Mongoengine - get the type of a document attribute
有没有一种简单的方法来获取文档给定属性的类型?
我有属性的名称,我想检查它是否是一个数字。例如,如果输入是字符串“price”,我应该 return True,因为值将是数字。
目前我正在尝试获取给定属性中具有非空值的第一个文档,但我没有成功,我想知道是否有更直接的方法来获取类型的价值。
我相信你最好的机会是检查文档字段的类型并维护字段类型(例如 StringField)和实际类型(例如 str)之间的映射。
以下内容应该可以让您了解如何实现该目标:
class TestDocument(Document):
s = StringField()
i = IntField()
assert isinstance(TestDocument.s, StringField)
def get_field_type(docCls, attr):
field = getattr(docCls, attr)
mapping = {StringField: str, IntField: int}
return mapping[type(field)]
assert get_field_type(TestDocument, 's') == str
assert get_field_type(TestDocument, 'i') == int
有没有一种简单的方法来获取文档给定属性的类型? 我有属性的名称,我想检查它是否是一个数字。例如,如果输入是字符串“price”,我应该 return True,因为值将是数字。
目前我正在尝试获取给定属性中具有非空值的第一个文档,但我没有成功,我想知道是否有更直接的方法来获取类型的价值。
我相信你最好的机会是检查文档字段的类型并维护字段类型(例如 StringField)和实际类型(例如 str)之间的映射。
以下内容应该可以让您了解如何实现该目标:
class TestDocument(Document):
s = StringField()
i = IntField()
assert isinstance(TestDocument.s, StringField)
def get_field_type(docCls, attr):
field = getattr(docCls, attr)
mapping = {StringField: str, IntField: int}
return mapping[type(field)]
assert get_field_type(TestDocument, 's') == str
assert get_field_type(TestDocument, 'i') == int