我有一个mongokit模型:
class Job(Document):
__collection__ = 'jobs'
structure = {
'data': dict,
'queue': basestring,
'executor': mongokit.OR(basestring, dict),
'state_name': basestring,
'state': mongokit.OR(basestring, dict),
'inherit': basestring,
}
default_values = {}
required_fields = []
当我保存数据时,它会引发SchemaTypeError: executor must be an instance of <basestring or dict> not unicode
。
unicode
是basestring
的子类型。这个错误使我感到困惑。
这些是我的依赖版本:
答案 0 :(得分:0)
有关Python中字符串的一些信息:
首先,“python中的所有内容都是对象。”
Object
1. Basestring
1. str
2. unicode
明确表示理解:
In [1]: unicode_str = u"I am unicode"
In [2]: normal_str = "I am normal string"
In [3]: isinstance(unicode_str, unicode)
Out[3]: True
In [4]: isinstance(unicode_str, str)
Out[4]: False
道德: unicode的类型将是unicode而不是basetring。因此,您遇到了这样的错误。
因此,在将字符串数据传递给字段executor
时,将其转换为字符串。